《Python語(yǔ)言程序設(shè)計(jì)(第2版)》課件 第1-4章 簡(jiǎn)介及示例 -面向?qū)ο骭第1頁(yè)
《Python語(yǔ)言程序設(shè)計(jì)(第2版)》課件 第1-4章 簡(jiǎn)介及示例 -面向?qū)ο骭第2頁(yè)
《Python語(yǔ)言程序設(shè)計(jì)(第2版)》課件 第1-4章 簡(jiǎn)介及示例 -面向?qū)ο骭第3頁(yè)
《Python語(yǔ)言程序設(shè)計(jì)(第2版)》課件 第1-4章 簡(jiǎn)介及示例 -面向?qū)ο骭第4頁(yè)
《Python語(yǔ)言程序設(shè)計(jì)(第2版)》課件 第1-4章 簡(jiǎn)介及示例 -面向?qū)ο骭第5頁(yè)
已閱讀5頁(yè),還剩429頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本章內(nèi)容01Python簡(jiǎn)介02程序基礎(chǔ)和Python編程環(huán)境03HelloWorld程序04輸入、輸出及IDLE環(huán)境介紹05應(yīng)用案例——簡(jiǎn)易數(shù)據(jù)管理程序本章目標(biāo)了解程序設(shè)計(jì)和Python語(yǔ)言的基本概念掌握Python語(yǔ)言的注釋方法、書寫規(guī)范和標(biāo)準(zhǔn)輸入/輸出方法理解本章給出的示例程序并能夠搭建Python環(huán)境運(yùn)行這些示例程序Python簡(jiǎn)介Python簡(jiǎn)介Python的優(yōu)點(diǎn)簡(jiǎn)單易學(xué):使用盡量少的代碼,完成更多工作免費(fèi)開(kāi)源:免費(fèi)使用,開(kāi)放源代碼跨平臺(tái)性:Python程序可在Linux、Windows、Mac、Android等平臺(tái)上運(yùn)行高層語(yǔ)言:開(kāi)發(fā)者可忽略底層細(xì)節(jié),專注于如何使用Python解決問(wèn)題面向?qū)ο螅耗7氯祟愓J(rèn)識(shí)客觀世界的方式,將軟件系統(tǒng)看成由多類對(duì)象組成豐富的庫(kù):以“搭積木”方式快速完成應(yīng)用系統(tǒng)開(kāi)發(fā),庫(kù)提供了大量“積木”膠水語(yǔ)言:可使用其他編程語(yǔ)言編寫的模塊應(yīng)用領(lǐng)域系統(tǒng)編程提供API(ApplicationProgrammingInterface,應(yīng)用程序編程接口),能方便進(jìn)行系統(tǒng)維護(hù)和管理,Linux下標(biāo)志性語(yǔ)言之一,是很多系統(tǒng)管理員理想的編程工具。圖形界面開(kāi)發(fā)Python在圖形界面開(kāi)發(fā)上很強(qiáng)大,可以用Tkinter/PyQT框架開(kāi)發(fā)各種桌面軟件。應(yīng)用領(lǐng)域科學(xué)計(jì)算Python是一門很適合做科學(xué)計(jì)算的編程語(yǔ)言,從1997年開(kāi)始,NASA就大量使用Python進(jìn)行各種復(fù)雜的科學(xué)運(yùn)算,隨著NumPy、SciPy、Matplotlib、Enthoughtlibrarys等眾多程序庫(kù)的開(kāi)發(fā),使得Python越來(lái)越適合做科學(xué)計(jì)算并繪制高質(zhì)量的2D和3D圖像。Python提供的re模塊能支持正則表達(dá)式,還提供SGML、XML分析模塊,許多程序員利用Python進(jìn)行XML程序的開(kāi)發(fā)。文本處理應(yīng)用領(lǐng)域數(shù)據(jù)庫(kù)編程程序員可通過(guò)遵循PythonDB-API(數(shù)據(jù)庫(kù)應(yīng)用程序編程接口)規(guī)范的模塊與MicrosoftSQLServer、Oracle、Sybase、DB2、MySQL、SQLite等數(shù)據(jù)庫(kù)通信。另外,Python自帶有一個(gè)Gadfly模塊,提供了一個(gè)完整的SQL環(huán)境。網(wǎng)絡(luò)編程提供豐富的模塊支持Sockets編程,能方便快速地開(kāi)發(fā)分布式應(yīng)用程序。應(yīng)用領(lǐng)域Web開(kāi)發(fā)Python擁有很多免費(fèi)數(shù)據(jù)函數(shù)庫(kù)、免費(fèi)web網(wǎng)頁(yè)模板系統(tǒng)以及與web服務(wù)器進(jìn)行交互的庫(kù),可以實(shí)現(xiàn)web開(kāi)發(fā),搭建web框架。目前最火的Pythonweb框架Django,Django官方的標(biāo)語(yǔ)把Django定義為theframeworkforperfectionistwithdeadlines(完美主義者使用的高效率web框架)。用Python開(kāi)發(fā)的Web項(xiàng)目小而精,支持最新的XML技術(shù),而且數(shù)據(jù)處理的功能較為強(qiáng)大。應(yīng)用領(lǐng)域自動(dòng)化運(yùn)維Python是運(yùn)維人員廣泛使用的語(yǔ)言,能滿足絕大部分自動(dòng)化運(yùn)維需求,包括前端和后端。金融分析利用Numpy、Pandas、Scipy等數(shù)據(jù)分析模塊,可快速完成金融分析工作。目前,Python是金融分析、量化交易領(lǐng)域里使用最多的語(yǔ)言。應(yīng)用領(lǐng)域多媒體應(yīng)用Python的PyOpenGL模塊封裝了“OpenGL應(yīng)用程序編程接口”,能進(jìn)行二維和三維圖像處理。網(wǎng)絡(luò)爬蟲在爬蟲領(lǐng)域,Python幾乎是霸主地位,提供了Scrapy、Request、BeautifulSoap、urllib等工具庫(kù),將網(wǎng)絡(luò)中的一切數(shù)據(jù)作為資源,通過(guò)自動(dòng)化程序進(jìn)行有針對(duì)性的數(shù)據(jù)采集以及處理。應(yīng)用領(lǐng)域游戲開(kāi)發(fā)在網(wǎng)絡(luò)游戲開(kāi)發(fā)中Python也有很多應(yīng)用。相比Lua,Python有更高階的抽象能力,可以用更少的代碼描述游戲業(yè)務(wù)邏輯。另外,Python更適合作為一種Host語(yǔ)言,即程序的入口點(diǎn)是在Python那一端會(huì)比較好,然后用C/C++寫一些擴(kuò)展。Python非常適合編寫1萬(wàn)行以上的項(xiàng)目,而且能夠很好地把網(wǎng)游項(xiàng)目的規(guī)??刂圃?0萬(wàn)行代碼以內(nèi)。GAME應(yīng)用領(lǐng)域人工智能NASA和Google早期大量使用Python,為Python積累了豐富的科學(xué)運(yùn)算庫(kù)。當(dāng)AI(ArtificialIntelligence,人工智能)時(shí)代來(lái)臨后,Python從眾多編程語(yǔ)言中脫穎而出,各種AI算法都基于Python編寫。在神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)方面,Python都能夠找到比較成熟的包來(lái)加以調(diào)用。另外,Python是面向?qū)ο蟮膭?dòng)態(tài)語(yǔ)言,且適用于科學(xué)計(jì)算,這就使得Python在人工智能方面?zhèn)涫芮嗖A。常用工具庫(kù)簡(jiǎn)介常用工具庫(kù)簡(jiǎn)介Numpy&ScipyPandasNumpy除了提供一些高級(jí)的數(shù)學(xué)運(yùn)算機(jī)制外,還具備非常高效的向量和矩陣運(yùn)算功能。Scipy是在Numpy基礎(chǔ)上構(gòu)建的更為強(qiáng)大、應(yīng)用領(lǐng)域也更為廣泛的科學(xué)計(jì)算包一款針對(duì)于數(shù)據(jù)處理和分析的Python工具包,實(shí)現(xiàn)了大量便于數(shù)據(jù)讀寫、清洗、填充以及分析的功能,使數(shù)據(jù)預(yù)處理工作更加簡(jiǎn)單常用工具庫(kù)簡(jiǎn)介Scikit-learnMatplotlibAnaconda封裝了大量經(jīng)典以及最新的機(jī)器學(xué)習(xí)模型一款Python編程環(huán)境下免費(fèi)使用的繪圖工具包,其工作方式和繪圖命令幾乎和MATLAB類似一個(gè)集成平臺(tái),可以一次性獲得300多種用于科學(xué)和工程計(jì)算相關(guān)任務(wù)的Python編程庫(kù)的支持常用工具庫(kù)簡(jiǎn)介網(wǎng)絡(luò)爬蟲程序示例#導(dǎo)入Python中用于網(wǎng)絡(luò)爬蟲的urllib.request模塊fromurllibimportrequest首先#通過(guò)下面這兩條語(yǔ)句就可以將URL的源碼存在content變量中,其類型為字符型url=''#把等號(hào)右邊的網(wǎng)址賦值給urlcontent=request.urlopen(url).read()#等號(hào)后面的動(dòng)作是打開(kāi)源代碼頁(yè)面,并閱讀然后#可以將獲取到的URL源碼通過(guò)print函數(shù)輸出print(content)最后程序基礎(chǔ)和Python編程環(huán)境程序基礎(chǔ)和Python編程環(huán)境指令和程序每臺(tái)計(jì)算機(jī)都有自己的指令(Instruction)集合,每條指令可以讓計(jì)算機(jī)完成一個(gè)最基本的操作。程序(Program)則是由一系列指令根據(jù)特定規(guī)則組合而成,在計(jì)算機(jī)上執(zhí)行程序的過(guò)程實(shí)質(zhì)上就是組成程序的各條指令按順序依次執(zhí)行的過(guò)程。輸入數(shù)據(jù)數(shù)據(jù)處理輸出數(shù)據(jù)高級(jí)程序設(shè)計(jì)語(yǔ)言和低級(jí)程序設(shè)計(jì)語(yǔ)言高級(jí)程序設(shè)計(jì)語(yǔ)言包括Python、C/C++、Java等低級(jí)程序設(shè)計(jì)語(yǔ)言包括匯編語(yǔ)言和機(jī)器語(yǔ)言編程語(yǔ)言表示形式Python語(yǔ)言a=b+1匯編語(yǔ)言mov0x804a01c,%eaxadd$0x1,%eaxmov%eax,0x804a018機(jī)器語(yǔ)言a11ca0040883c001a318a00408編譯型語(yǔ)言和解釋型語(yǔ)言編譯高級(jí)語(yǔ)言編寫的程序稱為源代碼(SourceCode)或源文件。編譯(Compile)是將源代碼全部翻譯成機(jī)器指令,再加上一些描述信息,生成一個(gè)新的文件。這個(gè)新的文件稱為可執(zhí)行文件。一個(gè)可執(zhí)行文件可以在計(jì)算機(jī)上多次運(yùn)行,因此,在不修改源代碼的情況下,只需要做一次編譯即可。源代碼編譯器可執(zhí)行文件加載器執(zhí)行結(jié)果編譯器讀取源代碼編譯器生成可執(zhí)行文件操作系統(tǒng)加載可執(zhí)行文件運(yùn)行可執(zhí)行文件中的機(jī)器指令編譯型語(yǔ)言和解釋型語(yǔ)言解釋解釋(Interpret)是在程序運(yùn)行時(shí)才對(duì)源代碼進(jìn)行逐條語(yǔ)句的翻譯并運(yùn)行。解釋型語(yǔ)言編寫的程序每執(zhí)行一次,就要翻譯一次,翻譯結(jié)果不會(huì)像編譯型語(yǔ)言一樣保存在可執(zhí)行文件中,因此效率較低。Python是一種解釋型語(yǔ)言,但為了提高運(yùn)行效率,Python程序在執(zhí)行一次之后會(huì)自動(dòng)生成擴(kuò)展名為.pyc的字節(jié)碼文件;字節(jié)碼不同于機(jī)器語(yǔ)言,但很容易轉(zhuǎn)換為機(jī)器語(yǔ)言。提示源代碼解釋器執(zhí)行結(jié)果解釋器讀取源代碼解釋并執(zhí)行當(dāng)前語(yǔ)句環(huán)境安裝安裝包下載Python官網(wǎng)()的Downloads環(huán)境安裝安裝包下載環(huán)境安裝安裝包下載環(huán)境安裝Windows平臺(tái)上安裝Python語(yǔ)言環(huán)境環(huán)境安裝Windows平臺(tái)上Python語(yǔ)言環(huán)境使用HelloWorld程序HelloWorld程序HelloWorld程序1 '''#3個(gè)連續(xù)的單引號(hào)2 ThisismyfirstPythonprogram3 Author:KaiWang4 CreateDate:09/09/20235 '''#3個(gè)連續(xù)的單引號(hào)6 print("HelloWorld!")#在屏幕上輸出:HelloWorld!運(yùn)行方式交互式運(yùn)行腳本式運(yùn)行中文編碼HelloWorld代碼修改6 print("你好,世界!")#在屏幕上輸出:你好,世界!注意使用Python3.x環(huán)境創(chuàng)建Python腳本文件時(shí),需要將文件編碼格式設(shè)置為UTF-8,否則運(yùn)行腳本時(shí)可能會(huì)報(bào)錯(cuò)。例如,如果在使用ANSI編碼的Python腳本文件中輸入代碼并運(yùn)行,則會(huì)出現(xiàn)如下錯(cuò)誤信息提示:SyntaxError:Non-UTF-8codestartingwith'\xcd'infiled:/pythonsamplecode/01/helloworld.pyonline4,butnoencodingdeclared;see/dev/peps/pep-0263/fordetails注釋單行注釋6 print("HelloWorld!")#在屏幕上輸出:HelloWorld!多行注釋1 '''#也可使用三個(gè)連續(xù)的雙引號(hào)2 ThisismyfirstPythonprogram3 Author:KaiWang4 CreateDate:09/09/20235 '''#也可使用三個(gè)連續(xù)的雙引號(hào)注釋注意在編寫程序時(shí)是否對(duì)代碼添加注釋不會(huì)影響程序的實(shí)際運(yùn)行結(jié)果,但良好的注釋將有助于增強(qiáng)程序的可讀性、從而提高程序的可維護(hù)性書寫規(guī)范Python語(yǔ)言通過(guò)縮進(jìn)方式體現(xiàn)各條語(yǔ)句之間的邏輯關(guān)系1 bPrint=True#為變量bPrint賦值為True2 ifbPrint:#如果bPrint的值為True,則執(zhí)行bPrint=False和print("Yes")3 bPrint=False#將bPrint設(shè)置為False4 print("Yes")#輸出:Yes5 print(bPrint)#輸出bPrint的值Python語(yǔ)言中的強(qiáng)制縮進(jìn)代碼示例關(guān)于Python中的代碼縮進(jìn)Python語(yǔ)言對(duì)于行首縮進(jìn)的方式?jīng)]有嚴(yán)格限制,既可以使用空格也可以使用制表符(Tab鍵),常用對(duì)代碼進(jìn)行一個(gè)層次縮進(jìn)的方式有:1個(gè)制表符,2個(gè)空格,或者4個(gè)空格。對(duì)于同一層次的代碼,必須使用相同的縮進(jìn)方式,否則會(huì)報(bào)錯(cuò)例如,如果同一層次的代碼有的縮進(jìn)2個(gè)空格,而有的縮進(jìn)4個(gè)空格,則會(huì)報(bào)如下錯(cuò)誤:

IndentationError:unexpectedindent再如,如果同一層次的代碼有的縮進(jìn)1個(gè)制表符,而有的縮進(jìn)4個(gè)空格,則會(huì)報(bào)如下錯(cuò)誤:

IndentationError:unindentdoesnotmatchanyouterindentationlevel輸入、輸出及IDLE環(huán)境介紹輸入、輸出及IDLE環(huán)境介紹input函數(shù)功能語(yǔ)法格式接收標(biāo)準(zhǔn)輸入數(shù)據(jù)(即從鍵盤輸入),返回為str類型的數(shù)據(jù)(即字符串)input([prompt])1、prompt是一個(gè)可選參數(shù),給用戶的提示信息;

不傳該參數(shù),則沒(méi)有提示信息,用戶直接從鍵盤輸入數(shù)據(jù)2、本課程規(guī)定,如果一個(gè)參數(shù)寫在一對(duì)方括號(hào)“[…]”中,則表示該參數(shù)

是可選參數(shù)input函數(shù)示例1 name=input(“請(qǐng)輸入你的姓名:”)#輸入:張三2 print(name)eval函數(shù)功能:計(jì)算字符串所對(duì)應(yīng)的表達(dá)式的值,返回表達(dá)式的計(jì)算結(jié)果語(yǔ)法格式:eval(expression)1、expression是字符串類型的參數(shù),對(duì)應(yīng)一個(gè)有效的Python表達(dá)式2、eval函數(shù)的完整語(yǔ)法格式為:eval(expression,globals=None,locals=None)eval函數(shù)示例1 r=eval(input("請(qǐng)輸入一個(gè)有效的表達(dá)式:"))2 print(r)print函數(shù)功能將各種類型的數(shù)據(jù)(字符串、整數(shù)、浮點(diǎn)數(shù)、列表、字典等)輸出到屏幕上語(yǔ)法格式print(object)其中,object是要輸出的數(shù)據(jù)print函數(shù)示例1 print("HelloWorld!")#輸出:HelloWorld!2 print(10)#輸出:103 print(3.5)#輸出:3.54 print([1,3,5,'list'])#輸出:[1,3,5,'list']5 print({1:'A',2:'B',3:'C',4:'D'})#輸出:{1:'A',2:'B',3:'C',4:'D'}IDLE環(huán)境介紹IDLE(Python’sIntegratedDevelopmentandLearningEnvironment,Python集成開(kāi)發(fā)和學(xué)習(xí)環(huán)境)對(duì)于一些大型程序的編寫和調(diào)試,也可以考慮使用PyCharm等集成開(kāi)發(fā)環(huán)境對(duì)于初學(xué)者進(jìn)行一些小程序的編寫和調(diào)試,IDLE環(huán)境完全能夠滿足需求IDLE環(huán)境介紹交互式運(yùn)行方式兩種窗口模式:Shell和Editor(編輯器)創(chuàng)建Python腳本選擇Shell窗口中的File->NewFile創(chuàng)建Python腳本文件并打開(kāi)Editor窗口創(chuàng)建Python腳本保存(File->Save)后,在Editor窗口選擇Run->RunModule菜單項(xiàng),可運(yùn)行當(dāng)前腳本文件,并在Shell窗口輸出運(yùn)行結(jié)果Python程序的錯(cuò)誤類型在編寫Python程序時(shí),主要會(huì)遇到兩類錯(cuò)誤:語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤當(dāng)執(zhí)行到有語(yǔ)法錯(cuò)誤的代碼時(shí),Python解釋器會(huì)顯示出錯(cuò)信息,開(kāi)發(fā)者可根據(jù)提示信息分析錯(cuò)誤原因并解決然而,Python解釋器并無(wú)法發(fā)現(xiàn)邏輯錯(cuò)誤,當(dāng)執(zhí)行有邏輯錯(cuò)誤的代碼時(shí),解釋器不會(huì)報(bào)任何錯(cuò)誤,但最后的執(zhí)行結(jié)果會(huì)與預(yù)期不一致Python程序的調(diào)試為了能夠分析執(zhí)行結(jié)果錯(cuò)誤的原因,所有編程語(yǔ)言的集成開(kāi)發(fā)環(huán)境都會(huì)提供調(diào)試的功能。通過(guò)調(diào)試可以逐條語(yǔ)句執(zhí)行程序并查看每條語(yǔ)句執(zhí)行后各變量的狀態(tài),也可以設(shè)置斷點(diǎn)讓程序執(zhí)行時(shí)遇到斷點(diǎn)就暫停執(zhí)行、停在斷點(diǎn)所在的代碼處。在IDLE的Shell窗口中有一個(gè)Debug菜單,該菜單中的菜單項(xiàng)就是用來(lái)調(diào)試Python程序。目前編寫的程序都比較簡(jiǎn)單,不容易出現(xiàn)邏輯錯(cuò)誤;編寫復(fù)雜程序時(shí)如果遇到邏輯錯(cuò)誤,可參考網(wǎng)上材料嘗試通過(guò)調(diào)試解決問(wèn)題。應(yīng)用案例

——簡(jiǎn)易數(shù)據(jù)管理程序應(yīng)用案例 ——簡(jiǎn)易數(shù)據(jù)管理程序問(wèn)題描述數(shù)據(jù),是人工智能的基礎(chǔ)。例如,在工業(yè)生產(chǎn)中,我們利用人工智能方法,對(duì)生產(chǎn)設(shè)備是否處于異常工作狀態(tài)進(jìn)行自動(dòng)識(shí)別,則需要通過(guò)布設(shè)在設(shè)備關(guān)鍵點(diǎn)位的傳感器,采集溫度、電流、振動(dòng)等能夠反應(yīng)設(shè)備工作狀態(tài)的時(shí)間序列數(shù)據(jù),并以這些數(shù)據(jù)為基礎(chǔ)建立用于設(shè)備異常工作狀態(tài)識(shí)別的人工智能模型。再如,在疾病診斷中,基于臨床采集的血清總膽固醇、低密度脂蛋白、高密度脂蛋白等醫(yī)學(xué)指標(biāo)數(shù)據(jù),可以建立人工智能模型對(duì)一個(gè)人可能患有的疾病進(jìn)行初篩。又如,在對(duì)生活習(xí)慣與BMI指數(shù)(體脂指數(shù))之間的關(guān)系進(jìn)行人工智能建模時(shí),需要記錄一個(gè)人的身高、體重、性別、生活習(xí)慣等數(shù)據(jù)。問(wèn)題描述本課程將結(jié)合第1至7章所介紹的知識(shí)點(diǎn),逐步構(gòu)建出一個(gè)簡(jiǎn)易的數(shù)據(jù)管理程序,支持?jǐn)?shù)據(jù)的錄入、刪除、修改、查詢等基本操作。一條數(shù)據(jù)通常由多個(gè)數(shù)據(jù)項(xiàng)組成,如用于生活習(xí)慣與BMI指數(shù)關(guān)聯(lián)分析的一條數(shù)據(jù)中會(huì)包括身高、體重、性別、每日吃飯次數(shù)、每日飲水量等數(shù)據(jù)項(xiàng)。本章僅學(xué)習(xí)了Python編程的一些基礎(chǔ)知識(shí),因此這里只介紹如何應(yīng)用本章所學(xué)習(xí)的知識(shí)進(jìn)行數(shù)據(jù)項(xiàng)名稱和數(shù)據(jù)項(xiàng)值的錄入和查看操作。數(shù)據(jù)項(xiàng)名稱和數(shù)據(jù)項(xiàng)值的錄入和查看操作示例1 item_name=input('請(qǐng)輸入數(shù)據(jù)項(xiàng)名稱:')#輸入:身高(m)2 item_value=input('請(qǐng)輸入數(shù)據(jù)項(xiàng)值:')#輸入:1.623 print('數(shù)據(jù)項(xiàng)名稱是',item_name)#輸出:數(shù)據(jù)項(xiàng)名稱是身高(m)4 print('數(shù)據(jù)項(xiàng)值是',item_value)#輸出:數(shù)據(jù)項(xiàng)值是1.62本章內(nèi)容01變量的定義02Number數(shù)據(jù)類型03String數(shù)據(jù)類型04List數(shù)據(jù)類型05Tuple數(shù)據(jù)類型06Set數(shù)據(jù)類型07Dictionary數(shù)據(jù)類型08占位運(yùn)算符和算術(shù)運(yùn)算符09賦值運(yùn)算符、比較運(yùn)算符和邏輯運(yùn)算符10位運(yùn)算符11身份運(yùn)算符和成員運(yùn)算符12序列運(yùn)算符和運(yùn)算符優(yōu)先級(jí)13條件語(yǔ)句概述14條件語(yǔ)句實(shí)現(xiàn)和pass15循環(huán)語(yǔ)句概述和for循環(huán)16while循環(huán)和索引17break、continue和else18應(yīng)用案例——簡(jiǎn)易數(shù)據(jù)管理程序本章目標(biāo)熟記Python的常用數(shù)據(jù)類型、能夠定義并使用變量保存程序中的各種數(shù)據(jù)掌握各運(yùn)算符的作用、利用Python中支持的這些運(yùn)算完成數(shù)據(jù)的處理理解條件語(yǔ)句和循環(huán)語(yǔ)句的作用、在實(shí)際編寫程序時(shí)能夠靈活運(yùn)用不同結(jié)構(gòu)的語(yǔ)句完成實(shí)際問(wèn)題的自動(dòng)求解當(dāng)運(yùn)行程序遇到邏輯錯(cuò)誤時(shí),具備利用調(diào)試工具發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力變量的定義變量的定義表示數(shù)據(jù)的量的分類常量是指在程序運(yùn)行過(guò)程中值不能發(fā)生改變的量。如1、3.5、3+4i、"test"等表示數(shù)據(jù)的量的分類變量是指在程序運(yùn)行過(guò)程中值可以發(fā)生改變的量。與數(shù)學(xué)中的變量一樣,需要為Python中的每一個(gè)變量指定一個(gè)名字,如x、y、test等。Python是一種弱類型的語(yǔ)言,變量的類型由其值的類型決定。Python變量在使用前不需要先定義,為一個(gè)變量賦值后,則該變量會(huì)自動(dòng)創(chuàng)建。注意:變量名兩邊不要加引號(hào)。正確的寫法:test=10 錯(cuò)誤的寫法:"test"=10變量的命名規(guī)則例如,test1是有效變量名,而1test則是無(wú)效變量名變量名可以包括字母、數(shù)字和下劃線,但是數(shù)字不能作為開(kāi)頭字符例如,and、break等都是系統(tǒng)關(guān)鍵字,不能作為變量名使用系統(tǒng)關(guān)鍵字不能做變量名使用例如,test和Test是兩個(gè)不同的變量Python的變量名區(qū)分大小寫提示Python3.x默認(rèn)使用UTF-8編碼,變量名中允許包含中文,如“測(cè)試”是一個(gè)有效的變量名。變量定義和使用示例1 test='HelloWorld!'2 Test=1233 print(test)#輸出:HelloWorld!4 print(Test)#輸出:1235 test=10.56 print(test)#輸出:10.5同時(shí)定義多個(gè)變量語(yǔ)法格式變量1,變量2,…,變量n=值1,值2,…,值n例name,age='張三',18修改多個(gè)變量的值12x,y=5,10x,y=y,x修改多個(gè)變量的值提示對(duì)于賦值運(yùn)算,會(huì)先計(jì)算賦值運(yùn)算符右邊的表達(dá)式的值,再將計(jì)算結(jié)果賦給左邊的變量。因此,第2行代碼會(huì)先將賦值運(yùn)算符右側(cè)的y和x的值得到,再將它們分別賦給左邊的變量。取出右側(cè)的y和x的值后,第2行代碼轉(zhuǎn)換為“x,y=10,5”,然后再執(zhí)行賦值運(yùn)算,即將10賦給x、將5賦給y。Number數(shù)據(jù)類型Number數(shù)據(jù)類型數(shù)據(jù)類型概述數(shù)值(Number)、字符串(String)、列表(List)、元組(Tuple)、集合(Set)、字典(Dictionary)一種編程語(yǔ)言所支持的數(shù)據(jù)類型決定了該編程語(yǔ)言所能保存的數(shù)據(jù)Python語(yǔ)言常用的內(nèi)置數(shù)據(jù)類型int(整型)、float(浮點(diǎn)型)、complex(復(fù)數(shù)類型)。Python中有3種不同的數(shù)值類型整型整型數(shù)值包括正整數(shù)、0和負(fù)整數(shù),不帶小數(shù)點(diǎn),無(wú)大小限制不加任何前綴為十進(jìn)制整數(shù)整數(shù)可以使用不同的進(jìn)制來(lái)表示加前綴0o為八進(jìn)制整數(shù)加前綴0x則為十六進(jìn)制整數(shù)整型例a,b,c=10,0o10,0x10#a、b、c的值分別為10、8、16提示Python語(yǔ)言中提供了Boolean(布爾)類型,用于表示邏輯值True(邏輯真)和False(邏輯假)Boolean類型是整型的子類型,在作為數(shù)值參與運(yùn)算時(shí),F(xiàn)alse自動(dòng)轉(zhuǎn)為0,True自動(dòng)轉(zhuǎn)為1提示定義為假的常量,包括None或False任意值為0的數(shù)值,如0、0.0、0j等空的序列或集合,如''(空字符串)、()(空元組)、[](空列表)等使用bool函數(shù)可以將其他類型的數(shù)據(jù)轉(zhuǎn)為Boolean類型,當(dāng)給bool函數(shù)傳入下列參數(shù)時(shí)其將會(huì)返回False:浮點(diǎn)型如3.14159、-10.5、3.25e3等浮點(diǎn)型數(shù)字使用C語(yǔ)言中的double類型實(shí)現(xiàn),可以用來(lái)表示實(shí)數(shù)3.25e3是科學(xué)記數(shù)法的表示方式,其中e表示10,因此,3.25e3實(shí)際上表示的浮點(diǎn)數(shù)是3.25*103=3250.0查看浮點(diǎn)數(shù)的取值范圍和精度的代碼示例importsys#導(dǎo)入sys包sys.float_info#查看當(dāng)前環(huán)境中浮點(diǎn)型數(shù)字的取值范圍和精度浮點(diǎn)型min和max是浮點(diǎn)數(shù)的最小值和最大值,dig是浮點(diǎn)數(shù)所能精確表示的十進(jìn)制數(shù)字的最大位數(shù)sys.float_info(max=1.7976931348623157e+308,max_exp=1024,max_10_exp=308,min=2.2250738585072014e-308,min_exp=-1021,min_10_exp=-307,dig=15,mant_dig=53,epsilon=2.220446049250313e-16,radix=2,rounds=1)復(fù)數(shù)類型復(fù)數(shù)由實(shí)部和虛部組成,每一部分都是一個(gè)浮點(diǎn)數(shù),其書寫方法如下:a+bj或a+bJGAME其中,a和b是兩個(gè)數(shù)值,j或J是虛部的后綴,即a是實(shí)部、b是虛部在生成復(fù)數(shù)時(shí),也可以使用complex函數(shù),其語(yǔ)法格式如下:complex([real[,imag]]其中,real為實(shí)部值,imag為虛部值,返回值為real+imag*1j復(fù)數(shù)類型提示如果省略虛部imag的值,則返回的復(fù)數(shù)為real+0j;如果實(shí)部real和虛部imag的值都省略,則返回的復(fù)數(shù)為0j例如,對(duì)于下面的代碼:c1,c2,c3,c4,c5=3+5.5j,3.25e3j,complex(5,-3.5),complex(5),complex()執(zhí)行完畢后,c1、c2、c3、c4和c5的值分別是:

(3+5.5j)、3250j、(5-3.5j)、(5+0j)和0jString數(shù)據(jù)類型String數(shù)據(jù)類型概述字符串是由多個(gè)字符組成的序列,每個(gè)字符是字符串中的一個(gè)元素。例如,"Python"即是一個(gè)由6個(gè)字符元素按順序排列所形成的字符串。之所以說(shuō)字符串是一個(gè)序列,是因?yàn)椋鹤址男畔?,不僅依賴于該字符串是由哪些字符組成的,而且也依賴于這些字符的排列順序。例如,對(duì)于兩個(gè)字符串"could"和"cloud",雖然包含了相同的字符元素,但由于字符元素的排列順序不同,所以這兩個(gè)字符串所表達(dá)的信息是完全不同的。概述Python語(yǔ)言中只有用于保存字符串的數(shù)據(jù)類型,而沒(méi)有用于保存單個(gè)字符的數(shù)據(jù)類型Python中的字符串可以寫在一對(duì)單引號(hào)中,也可以寫在一對(duì)雙引號(hào)或一對(duì)三雙引號(hào)中三種寫法的區(qū)別將在后面介紹,目前我們使用一對(duì)單引號(hào)或一對(duì)雙引號(hào)的寫法對(duì)于不包含任何字符的字符串,如''(一對(duì)單引號(hào))或""(一對(duì)雙引號(hào)),稱為空字符串(或簡(jiǎn)稱為空串)概述例如:s1,s2='HelloWorld!',"你好,世界!"執(zhí)行完畢后,s1和s2的值分別是字符串'HelloWorld!'和"你好,世界!"字符串轉(zhuǎn)成整數(shù)int第一個(gè)參數(shù)是要轉(zhuǎn)換為整數(shù)的字符串(要求必須是一個(gè)整數(shù)字符串,否則會(huì)報(bào)錯(cuò))第二個(gè)參數(shù)是字符串中整數(shù)的數(shù)制(不指定則默認(rèn)為10,即十進(jìn)制)字符串轉(zhuǎn)成整數(shù)例如int('35')返回整數(shù)35,int('35',8)返回整數(shù)29,int('35+1')則會(huì)因無(wú)法轉(zhuǎn)換而報(bào)錯(cuò)提示int僅是將字符串中的數(shù)字直接轉(zhuǎn)為整數(shù),不會(huì)做任何運(yùn)算。當(dāng)要轉(zhuǎn)換的字符串是一個(gè)包含運(yùn)算的表達(dá)式時(shí),則會(huì)報(bào)錯(cuò)字符串轉(zhuǎn)成浮點(diǎn)數(shù)float例如提示只有一個(gè)參數(shù),即要轉(zhuǎn)換為浮點(diǎn)數(shù)的字符串(要求必須是一個(gè)整數(shù)或浮點(diǎn)數(shù)字符串)float('35')返回浮點(diǎn)數(shù)35.0,float('35.5')返回浮點(diǎn)數(shù)35.5,float('35.5+3')則會(huì)因無(wú)法轉(zhuǎn)換而報(bào)錯(cuò)與int類似,float僅是將字符串中的數(shù)值直接轉(zhuǎn)為浮點(diǎn)數(shù),不會(huì)做任何運(yùn)算。當(dāng)要轉(zhuǎn)換的字符串是一個(gè)包含運(yùn)算的表達(dá)式時(shí),則會(huì)報(bào)錯(cuò)常用轉(zhuǎn)義字符轉(zhuǎn)義字符描述轉(zhuǎn)義字符描述\(在行尾時(shí))續(xù)行符\n換行\(zhòng)\反斜杠符號(hào)\r回車\'單引號(hào)\t制表符\"雙引號(hào)

常用轉(zhuǎn)義字符s1='Hello\1World!'#上一行以\作為行尾,說(shuō)明上一行與當(dāng)前行是同一條語(yǔ)句2s2='It'sabook.'#單引號(hào)非成對(duì)出現(xiàn),報(bào)SyntaxError錯(cuò)誤3例如:常用轉(zhuǎn)義字符456s3='It\'sabook.'#使用\'說(shuō)明其是字符串中的一個(gè)單引號(hào)字符s4="It'sabook."#使用一對(duì)雙引號(hào)的寫法,字符串中可直接使用單引號(hào),不需轉(zhuǎn)義s5="你好!\n歡迎學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)!"#通過(guò)\n換行常用轉(zhuǎn)義字符子串截取利用下標(biāo)運(yùn)算“[]”可以從字符串中截取一個(gè)子串,其語(yǔ)法格式為:s[beg:end]GAMEs:待做索引操作的字符串;beg:新生成字符串的起始字符在字符串s中的索引值;end:新生成字符串的結(jié)束字符在字符串s中的索引值,再加1。注意:s[beg:end]返回的字符串中,所包含的字符在字符串s中的索引是從beg至end-1,不包括end。子串截取提示:省略beg:即寫作s[:end],表示新生成字符串的起始字符在字符串s中的索引為0,等價(jià)于s[0:end];省略end:即寫作s[beg:],表示新生成字符串的結(jié)束字符是字符串s中的最后一個(gè)字符,等價(jià)于s[beg:len(s)](len(s)表示字符串s中包含的字符元素的數(shù)量,即字符串的長(zhǎng)度,也可理解為是字符串s中最后一個(gè)字符的索引值加1);同時(shí)省略beg和end:即寫作s[:],表示新生成的字符串包含s中的所有字符元素。下標(biāo)索引方式從前向后索引(正向索引)從后向前索引(反向索引)第1個(gè)字符的索引值為0,其他字符的索引值是前一字符的索引值增1從后向前索引方式中,最后一個(gè)字符的索引值為-1,其他字符的索引值是后一字符的索引值減1在截取子串時(shí),既可以只使用某一種索引方式,也可以同時(shí)使用兩種索引方式下標(biāo)索引方式字符串歡迎學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)!正向索引012345678910111213141516反向索引-17-16-15-14-13-12-11-10-9-8-7-6-5-4-3-2-1下標(biāo)索引方式1s='歡迎學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)!'2print(s[2:4]#輸出:學(xué)習(xí)例如:3print(s[-3:-1])#輸出:設(shè)計(jì)下標(biāo)索引方式print(s[2:-1])#輸出:學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)4print(s[:10])#輸出:歡迎學(xué)習(xí)Python5print(s[-5:])#輸出:程序設(shè)計(jì)!6print(s[:])#輸出:歡迎學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)!7子串截取提示:在進(jìn)行字符串的索引操作時(shí),還可以指定步長(zhǎng),即寫作s[beg:end:step]。此時(shí),在新創(chuàng)建的字符串中,所包含的字符在s中的索引依次為:beg、beg+step、beg+2*step、……、beg+k*step(beg+k*step<end且beg+k*(step+1)≥end)。例如,對(duì)于s='HelloWorld!',執(zhí)行:print(s[0:6:2]),輸出結(jié)果為:Hlo,即對(duì)于s[0:6:2]返回的新字符串所包含的字符,其在字符串s中的索引分別是0、2、4(不包括6)。截取單一字符也可以采用下面的寫法:s[idx]其中,idx是要截取的字符的下標(biāo)。例如:1 s='歡迎學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)!'2 print(s[2])#輸出:學(xué)3 print(s[-1])#輸出:!截取單一字符注意使用索引操作可以訪問(wèn)字符串中的字符元素,但不能修改。例如,如果執(zhí)行:s[2]='復(fù)',則會(huì)報(bào)TypeError錯(cuò)誤。List數(shù)據(jù)類型List數(shù)據(jù)類型概述List(列表)是Python中一種非常重要的數(shù)據(jù)類型。列表中可以包含多個(gè)元素,且元素類型可以不相同。每一元素可以是任一數(shù)據(jù)類型,包括列表(即列表嵌套)及后面要介紹的元組、集合、字典。所有元素都寫在一對(duì)方括號(hào)[]中,每?jī)蓚€(gè)元素之間用逗號(hào)分隔。對(duì)于不包含任何元素的列表,即[],稱為空列表。列表元素索引與字符串相同,利用下標(biāo)運(yùn)算符[]可以指定索引范圍,從已有列表中取出其中部分元素形成一個(gè)新列表,其語(yǔ)法格式為:ls[beg:end]GAMEls:待做索引操作的列表;beg:新生成列表的起始元素在ls中的索引值;end:新生成列表的結(jié)束元素在ls中的索引值,再加1。列表中元素的索引方式與字符串中元素的索引方式完全相同,也支持從前向后索引(正向索引)和從后向前索引(反向索引)兩種方式列表元素索引提示省略beg:即寫作ls[:end],表示新生成列表的起始元素在原列表ls中的索引為0,等價(jià)于ls[0:end];省略end:即寫作ls[beg:],表示新生成列表的結(jié)束元素是原列表ls中的最后一個(gè)元素,等價(jià)于ls[beg:len(ls)](len(ls)表示列表ls中包含的元素的數(shù)量,即列表的長(zhǎng)度,也可理解為是列表ls中最后一個(gè)元素的索引值加1);同時(shí)省略beg和end:即寫作ls[:],表示新生成列表包含原列表ls中的所有元素。列表元素索引對(duì)于ls=[1,2.5,'test',3+4j,True,[3,1.63],5.3]這個(gè)列表,其各元素的索引值為:例如列表12.5'test'3+4jTrue[3,1.63]5.3正向索引0123456反向索引-7-6-5-4-3-2-1列表元素索引123ls=[1,2.5,'test',3+4j,True,[3,1.63],5.3]print(ls[1:4])#輸出:[2.5,'test',(3+4j)]print(ls[-3:-1])#輸出:[True,[3,1.63]]列表元素索引print(ls[2:-1])#輸出:['test',(3+4j),True,[3,1.63]]4print(ls[:3])#輸出:[1,2.5,'test']

5print(ls[-2:])#輸出:[[3,1.63],5.3]6print(ls[:])#輸出:[1,2.5,'test',(3+4j),True,[3,1.63],5.3]7訪問(wèn)單個(gè)元素如果只訪問(wèn)列表ls中的某一個(gè)元素,則可以使用下面的寫法:

ls[idx]其中,idx是要訪問(wèn)的元素的索引值。例如:1 ls=[1,2.5,'test',3+4j,True,[3,1.63],5.3]2 print(ls[2])#輸出:test3 print(ls[-3])#輸出:True訪問(wèn)單個(gè)元素注意例如可見(jiàn)ls[beg:end]返回的仍然是一個(gè)列表;而ls[idx]返回的是列表中的一個(gè)元素。對(duì)于ls=[1,2.5,'test',3+4j,True,[3,1.63],5.3],執(zhí)行:print(ls[2:3]),會(huì)輸出:['test'],而執(zhí)行:print(ls[2]),則會(huì)輸出:test。ls[2:3]返回的是只有一個(gè)字符串元素'test'的列表,而ls[2]返回的則是ls中索引值為2的元素(即字符串'test')。元素修改通過(guò)下標(biāo)運(yùn)算符[],不僅可以訪問(wèn)列表中的某個(gè)元素,還可以對(duì)元素進(jìn)行修改。例如:ls=[1,2.5,'test',3+4j,True,[3,1.63],5.3]1print(ls)#輸出:[1,2.5,'test',(3+4j),True,[3,1.63],5.3]2ls[2]=15#將列表ls中第3個(gè)元素的值改為153元素修改45print(ls)#輸出:[1,2.5,15,(3+4j),True,[3,1.63],5.3]ls[1:4]=['python',20]#將列表ls中第2至4個(gè)元素替換為['python',20]中的元素元素修改6print(ls)#輸出:[1,'python',20,True,[3,1.63],5.3]7ls[2]=['program',23.15]#將列表ls中第3個(gè)元素替換為['program',23.15]8print(ls)#輸出:[1,'python',['program',23.15],True,[3,1.63],5.3]元素修改9ls[0:2]=[]#將列表ls中前兩個(gè)元素替換為空列表[],即將前兩個(gè)元素刪除10print(ls)#輸出:[['program',23.15],True,[3,1.63],5.3]元素修改注意:在對(duì)列表中的元素賦值時(shí),既可以通過(guò)執(zhí)行:ls[idx]=a,修改單個(gè)元素的值;也可以通過(guò)執(zhí)行:ls[beg:end]=b,修改一個(gè)元素或同時(shí)修改連續(xù)多個(gè)元素的值。但需要注意,在通過(guò)“l(fā)s[beg:end]=b”這種方式賦值時(shí),b是另一個(gè)列表,其功能是用b中各元素替換ls中beg至end-1這些位置上的元素,賦值前后列表元素?cái)?shù)量允許發(fā)生變化。元素修改例如上面所示的代碼中,第3行和第7行都是修改列表ls中某一個(gè)元素的值,在為單個(gè)元素賦值時(shí),可以使用任意類型的數(shù)據(jù)(包括列表,如第7行);第5行是將列表ls中第2至4個(gè)元素修改為另一個(gè)列表['python',20]中的兩個(gè)元素;第9行是將列表ls中前兩個(gè)元素修改為另一個(gè)空列表[]中的元素,相當(dāng)于將ls中前兩個(gè)元素刪除。GAMETuple數(shù)據(jù)類型Tuple數(shù)據(jù)類型概述Tuple(元組)與列表類似,可以包含多個(gè)元素,且元素類型可以不相同,書寫時(shí)每?jī)蓚€(gè)元素之間也是用逗號(hào)分隔。01與列表的不同之處在于:元組的所有元素都寫在一對(duì)圓括號(hào)()中,且元組中的元素不能修改。02對(duì)于不包含任何元素的元組,即(),稱為空元組。03元組元素索引010203元組中元素的索引方式與列表中元素的索引方式完全相同。與列表相同,利用下標(biāo)運(yùn)算符[]可以從已有元組中取出其中部分元素形成一個(gè)新元組,其語(yǔ)法格式為:t[beg:end]其中,t為待做索引操作的元組;beg是新生成元組的起始元素在t中的索引值;end是新生成元組的結(jié)束元素在t中的索引值,再加1。元組元素索引提示:省略beg:即寫作t[:end],表示新生成元組的起始元素在原元組t中的索引為0,等價(jià)于t[0:end];省略end:即寫作t[beg:],表示新生成元組的結(jié)束元素是原元組t中的最后一個(gè)元素,等價(jià)于t[beg:len(t)](len(t)表示元組t中包含的元素的數(shù)量,即元組的長(zhǎng)度,也可理解為是元組t中最后一個(gè)元素的索引值加1);同時(shí)省略beg和end:即寫作t[:],表示新生成元組包含原元組t中的所有元素。元組元素索引例如:1 t=(1,2.5,'test',3+4j,True,[3,1.63],5.3)2 print(t[1:4])#輸出:[2.5,'test',(3+4j)]3 print(t[-3:-1])#輸出:[True,[3,1.63]]4 print(t[2:-1])#輸出:['test',(3+4j),True,[3,1.63]]5 print(t[:3])#輸出:[1,2.5,'test']6 print(t[-2:])#輸出:[[3,1.63],5.3]7 print(t[:])#輸出:[1,2.5,'test',(3+4j),True,[3,1.63],5.3]元組12.5'test'3+4jTrue[3,1.63]5.3正向索引0123456反向索引-7-6-5-4-3-2-1單一元素訪問(wèn)如果只訪問(wèn)元組t中的某一個(gè)元素,則可以使用下面的寫法:t[idx]其中,idx是要訪問(wèn)的元素的索引值。1 t=(1,2.5,'test',3+4j,True,[3,1.63],5.3)2 print(t[2])#輸出:test3 print(t[-3])#輸出:True例如:?jiǎn)我辉卦L問(wèn)提示:字符串、列表和元組的元素都是按一定順序排列,可通過(guò)下標(biāo)運(yùn)算符[]直接訪問(wèn),這樣的數(shù)據(jù)類型統(tǒng)稱為序列。其中,字符串和元組中的元素不能修改,而列表中的元素可以修改。注意:通過(guò)索引操作可以訪問(wèn)元組中的元素,但不能修改。例如,如果執(zhí)行:t[2]='Test',則會(huì)報(bào)TypeError錯(cuò)誤。Set數(shù)據(jù)類型Set數(shù)據(jù)類型概述0102與元組和列表類似,Set(集合)中同樣可以包含多個(gè)不同類型的元素,但集合中的各元素?zé)o序、不允許有相同元素,且元素必須是可哈希(hashable)的對(duì)象。可哈希對(duì)象是指擁有__hash__(self)內(nèi)置方法的對(duì)象。列表、集合和字典類型的數(shù)據(jù)不是可哈希對(duì)象,所以它們不能作為集合中的元素。創(chuàng)建集合集合中的所有元素都寫在一對(duì)花括號(hào){}中,各元素之間用逗號(hào)分隔。創(chuàng)建集合時(shí),既可以使用{},也可以使用set。set的使用方法如下:set([iterable])其中,iterable是一個(gè)可選參數(shù),表示一個(gè)可迭代對(duì)象。set會(huì)將可迭代對(duì)象iterable中的每個(gè)元素逐一取出,作為新創(chuàng)建集合對(duì)象中的元素。可迭代(iterable)對(duì)象,是指可以逐一訪問(wèn)每一個(gè)元素的數(shù)據(jù),如前面學(xué)習(xí)的字符串、列表、元組類型的數(shù)據(jù)都是可迭代對(duì)象。注意:創(chuàng)建集合例如:1 a={10,2.5,'test',3+4j,True,5.3,2.5}2 print(a)#輸出:{True,2.5,'test',5.3,10,(3+4j)}3 b=set('hello')4 print(b)#輸出:{'e','o','l','h'}5 c=set([10,2.5,'test',3+4j,True,5.3,2.5])6 print(c)#輸出:{True,2.5,5.3,10,(3+4j),'test'}7 d=set((10,2.5,'test',3+4j,True,5.3,2.5))8 print(d)#輸出:{True,2.5,5.3,10,(3+4j),'test'}創(chuàng)建集合注意:1.與字符串、列表、元組等序列類型不同,集合中的元素沒(méi)有順序之分,因此不能使用數(shù)值索引方式進(jìn)行訪問(wèn)。2.集合的主要應(yīng)用可以概括為3個(gè)方面:(1)用于做并、交、差等集合運(yùn)算;(2)基于集合進(jìn)行元素的快速檢索;(3)使用集合進(jìn)行重復(fù)元素的過(guò)濾。3.{}用于創(chuàng)建空字典,如果要?jiǎng)?chuàng)建一個(gè)空集合,則只能使用set()。創(chuàng)建集合Dictionary數(shù)據(jù)類型Dictionary數(shù)據(jù)類型概述01Dictionary(字典)是另一種無(wú)序元素的集合。02但與集合不同,字典是一種映射類型,每一個(gè)元素是一個(gè)鍵(key):值(value)對(duì)。概述在一個(gè)字典對(duì)象中鍵必須是唯一的,即不同元素的鍵不能相同;另外,鍵必須是可哈希數(shù)據(jù),即鍵不能是列表、集合、字典等數(shù)據(jù)類型;值則沒(méi)有任何限制、可以是任意數(shù)據(jù)類型。對(duì)于不包含任何元素的字典,即{},稱為空字典。創(chuàng)建字典既可以使用{},也可以使用dict。如果要?jiǎng)?chuàng)建一個(gè)空字典,可以使用{}或dict()。例如:1 a={}2 b=dict()執(zhí)行完畢后,a和b是兩個(gè)不包含任何元素的空字典。創(chuàng)建字典如果在創(chuàng)建字典的同時(shí),需要給出字典中的元素,則可以使用下面的方法:1 {k1:v1,k2,:v2,…,kn:vn}#ki和vi(i=1,2,…,n)分別是每一個(gè)元素的鍵和值2 dict(**kwarg)#**kwarg是一個(gè)或多個(gè)賦值表達(dá)式,兩個(gè)賦值表達(dá)式之間用逗號(hào)分隔3 dict(z)#z是zip函數(shù)返回的結(jié)果4 dict(ls)#ls是元組的列表,每個(gè)元組包含兩個(gè)元素,分別對(duì)應(yīng)鍵和值5 dict(dictionary)#dictionary是一個(gè)已有的字典創(chuàng)建字典例如:1 a={'one':1,'two':2,'three':3}2 b=dict(one=1,two=2,three=3)3 c=dict(zip(['one','two','three'],[1,2,3]))4 d=dict([('one',1),('two',2),('three',3)])5 e=dict({'one':1,'two':2,'three':3})6 print(a,b,c,d,e)這5條語(yǔ)句創(chuàng)建的5個(gè)字典對(duì)象的元素完全相同,使用print函數(shù)查看每一個(gè)變量,都能得到如下輸出結(jié)果:{'one':1,'two':2,'three':3}創(chuàng)建字典zip函數(shù)的參數(shù)是多個(gè)可迭代的對(duì)象(如列表、元組等),其功能是將不同可迭代對(duì)象中對(duì)應(yīng)位置(即具有相同索引值)的元素分別打包成元組,然后返回由這些元組組成的可迭代對(duì)象。在Python3.x中為了減少內(nèi)存,zip函數(shù)返回的是一個(gè)對(duì)象,可以通過(guò)list函數(shù)轉(zhuǎn)換為列表。訪問(wèn)字典元素與字符串、列表、元組這些序列數(shù)據(jù)不同,在訪問(wèn)字典中的元素時(shí)不能通過(guò)整數(shù)索引的方式訪問(wèn),而是要以鍵作為元素的索引。例如:1 info={'name':'張三','age':19,'score':{'python':95,'math':92}}2 print(info['name'])#輸出:張三3 print(info['age'])#輸出:194 print(info['score'])#輸出:{'python':95,'math':92}5 print(info['score']['python'])#輸出:956 print(info['score']['math'])#輸出:92訪問(wèn)字典元素占位運(yùn)算符和算術(shù)運(yùn)算符占位運(yùn)算符和算術(shù)運(yùn)算符占位運(yùn)算符運(yùn)算符類似于C語(yǔ)言中sprintf或printf函數(shù)中使用的占位符,在字符串中可以給出一些占位符用來(lái)表示不同類型的數(shù)據(jù),而實(shí)際的數(shù)據(jù)值在字符串之外給出。占位符描述占位符描述%d有符號(hào)整型十進(jìn)制數(shù)%s字符串%f或%F有符號(hào)浮點(diǎn)型十進(jìn)制數(shù)1 s1='%s上次數(shù)學(xué)成績(jī)%d,本次%d,成績(jī)提高%f'%('小明',85,90,5/85)2 s2='%5s上次數(shù)學(xué)成績(jī)%5d,本次%5d,成績(jī)提高%.2f'%('小明',85,90,5/85)3 s3='%5s上次數(shù)學(xué)成績(jī)%05d,本次%05d,成績(jī)提高%08.2f'%('小明',85,90,5/85)4 print(s1)5 print(s2)6 print(s3)占位運(yùn)算符由于%作為占位符的前綴字符,因此對(duì)于有占位符的字符串,表示一個(gè)%時(shí)需要寫成:%%。提示占位運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算是計(jì)算機(jī)支持的主要運(yùn)算之一,其運(yùn)算對(duì)象是數(shù)值型數(shù)據(jù)。運(yùn)算符使用方法功能描述+(加)x+yx與y相加-(減)x-yx與y相減*(乘)x與y相乘/(除)x/yx除以y//(整除)x//yx整除y,返回x/y的整數(shù)部分%(模)x%yx整除y的余數(shù),即x-x//y*y的值-(負(fù)號(hào))-xx的負(fù)數(shù)+(正號(hào))+xx的正數(shù)(與x相等)**(乘方)x**yx的y次冪例如提示十進(jìn)制小數(shù)在轉(zhuǎn)換為二進(jìn)制時(shí)有可能會(huì)產(chǎn)生精度損失,所以在第6行和第7行的輸出中,結(jié)果與實(shí)際計(jì)算結(jié)果之間存在偏差,如f1(3.2)乘以f2(1.5)應(yīng)該等于4.8,但最后輸出的數(shù)據(jù)與實(shí)際計(jì)算結(jié)果存在0.000000000000001的偏差。1 i1,i2=10,32 f1,f2=3.2,1.53 c1,c2=3+4.1j,5.2+6.3j4 print(i1+i2)#輸出:135 print(c1-c2)#輸出:(-2.2-2.2j)6 print(f1*f2)#輸出:4.8000000000000017 print(i1/i2)#輸出:3.33333333333333358 print(i1//i2)#輸出:39 print(i1%i2)#輸出:110 print(-f1)#輸出:-3.211 print(+f2)#輸出:1.512 print(i1**i2)#輸出:1000賦值運(yùn)算符比較運(yùn)算符

和邏輯運(yùn)算符賦值運(yùn)算符比較運(yùn)算符

和邏輯運(yùn)算符賦值運(yùn)算符賦值運(yùn)算要求左操作數(shù)對(duì)象必須是值可以修改的變量。運(yùn)算符使用方法功能描述=y=x

將x的值賦給變量y+=y+=x

等價(jià)于y=y+x-=y-=x等價(jià)于y=y-x*=y*=x等價(jià)于y=y*x/=y/=x等價(jià)于y=y/x//=y//=x等價(jià)于y=y//x%=y%=x等價(jià)于y=y%x**=y**=x等價(jià)于y=y**x例如1 i1,i2=10,3#i1和i2的值分別被賦為10和32 i1+=i2#i1的值被改為133 print(i1)#輸出:134 c1,c2=3+4.1j,5.2+6.3j#c1和c2的值分別被賦為3+4.1j和5.2+6.3j5 c1-=c2#c1的值被改為-2.2-2.2j6 print(c1)#輸出:(-2.2-2.2j)7 f1,f2=3.2,1.5#f1和f2的值分別被賦為3.2和1.58 f1*=f2#f1的值被改為4.89 print(f1)#輸出:4.800000000000001(計(jì)算結(jié)果存在偏差)10 i1,f1=3,0.5#i1和f1的值分別被賦為3和0.511 i1**=f1#i1的值被改為1.7320508075688772(即3的0.5次冪)12 print(i1)#輸出:1.7320508075688772比較運(yùn)算符比較運(yùn)算的作用是對(duì)兩個(gè)操作數(shù)對(duì)象的大小關(guān)系進(jìn)行判斷。運(yùn)算符使用方法功能描述==(等于)y==x如果y和x相等,則返回True;否則,返回False!=(不等于)y!=x如果y和x不相等,則返回True;否則,返回False>(大于)y>x如果y大于x,則返回True;否則,返回False<(小于)y<x如果y小于x,則返回True;否則,返回False>=(大于等于)y>=x如果y大于或等于x,則返回True;否則,返回False<=(小于等于)y<=x如果y小于或等于x,則返回True;否則,返回False例如提示1 i1,i2,i3=25,35,25#i1、i2和i3分別被賦為25、35和602 print(i1==i2)#輸出:False3 print(i1!=i2)#輸出:True4 print(i1>i3)#輸出:False5 print(i1<i2)#輸出:True6 print(i1>=i3)#輸出:True7 print(i1<=i2)#輸出:True比較運(yùn)算返回的結(jié)果是布爾值True或False。在執(zhí)行程序時(shí),程序中的每條語(yǔ)句并不一定是按順序依次執(zhí)行。比較運(yùn)算的主要作用是設(shè)置條件,某些語(yǔ)句在滿足條件時(shí)才會(huì)執(zhí)行一次(即條件語(yǔ)句),而某些語(yǔ)句在滿足條件時(shí)會(huì)重復(fù)執(zhí)行多次(即循環(huán)語(yǔ)句)。注意:區(qū)分賦值運(yùn)算符=(一個(gè)等號(hào))和比較運(yùn)算符==(兩個(gè)等號(hào))。例如,a=5表示通過(guò)賦值運(yùn)算將數(shù)值5賦給變量a;而a==5用于判斷變量a是否等于5,返回True或False。邏輯運(yùn)算符邏輯運(yùn)算可以將多個(gè)比較運(yùn)算連接起來(lái)形成更復(fù)雜的條件判斷。例如:1 n,a=80,1002 print(n>=0andn<=a)#輸出:True3 print(n<0orn>a)#輸出:False4 print(not(n>=0andn<=a))#輸出:False運(yùn)算符使用方法功能描述andxandy如果x和y都為Ture,則返回True;否則,返回Falseorxory如果x和y都為False,則返回False;否則,返回Truenotnotx如果x為True,則返回False;如果x為False,返回True提示:第2行代碼中的n>=0andn<=a,也可以寫為0<=n<=a,二者完全等價(jià)。位運(yùn)算符位運(yùn)算符十進(jìn)制轉(zhuǎn)二進(jìn)制除基取余法用2去除十進(jìn)制整數(shù),得到商和余數(shù);如果商不為0,則繼續(xù)用2除,再得到商和余數(shù),重復(fù)該步驟直至商為0;最后將余數(shù)按照從后至前的順序排列,即得到轉(zhuǎn)換后的二進(jìn)制數(shù)。提示“除基取余法”中的“基”是指基數(shù),基數(shù)即為一種數(shù)制中可用數(shù)碼的個(gè)數(shù)。二進(jìn)制可用的數(shù)碼只有0和1兩個(gè),所以二進(jìn)制的基數(shù)是2。十進(jìn)制轉(zhuǎn)二進(jìn)制例如:二進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù)的規(guī)則是“按權(quán)展開(kāi)求和”,即將二進(jìn)制數(shù)的每一位寫成數(shù)碼乘以位權(quán)的形式,再對(duì)乘積求和。對(duì)于二進(jìn)制數(shù)11010B,其對(duì)應(yīng)的十進(jìn)制數(shù)為:11010B=1*24+1*23+0*22+1*21+0*20 =1*16+1*8+0*4+1*2+0*1 =16+8+0+2+0=26例如二進(jìn)制轉(zhuǎn)十進(jìn)制位運(yùn)算符位運(yùn)算是指對(duì)二進(jìn)制數(shù)進(jìn)行逐位運(yùn)算。運(yùn)算符使用方法功能描述&(按位與)y&x如果y和x對(duì)應(yīng)位都為1,則結(jié)果中該位為1;否則,該位為0|(按位或)y|x如果y和x對(duì)應(yīng)位都為0,則結(jié)果中該位為0;否則,該位為1^(按位異或)y^x如果y和x對(duì)應(yīng)位不同,則結(jié)果中該位為1;否則,該位為0<<(左移位)y<<x將y左移x位(右側(cè)補(bǔ)0)>>(右移位)y>>x將y右移x位(左側(cè)補(bǔ)0)~(按位取反)~x如果x的某位為1,則結(jié)果中該位為0;否則,該位為1位運(yùn)算示例011B &110B 010B位運(yùn)算示例123i1,i2=3,6#i1對(duì)應(yīng)的二進(jìn)制數(shù)是11B,i2對(duì)應(yīng)的二進(jìn)制數(shù)是110Bprint(i1&i2)#輸出:2。計(jì)算方法:011B&110B=010B=2print(i1|i2)#輸出:7。計(jì)算方法:011B|110B=111B=7例如:位運(yùn)算示例print(i1^i2)#輸出:5。計(jì)算方法:011B^110B=101B=54print(i1<<1)#輸出:6。計(jì)算方法:11B<<1=110B=65print(i1>>1)#輸出:1。計(jì)算方法:11B>>1=1B=16身份運(yùn)算符和成員運(yùn)算符身份運(yùn)算符和成員運(yùn)算符身份運(yùn)算符身份運(yùn)算用于比較兩個(gè)對(duì)象是否對(duì)應(yīng)同樣的存儲(chǔ)單元。程序在運(yùn)行時(shí),輸入數(shù)據(jù)和輸出數(shù)據(jù)都是存放在內(nèi)存中。內(nèi)存中的一個(gè)存儲(chǔ)單元可以存儲(chǔ)一個(gè)字節(jié)的數(shù)據(jù),每個(gè)存儲(chǔ)單元都有一個(gè)唯一的編號(hào),稱為內(nèi)存地址。根據(jù)數(shù)據(jù)類型不同,其所占用的內(nèi)存大小也不同。一個(gè)數(shù)據(jù)通常會(huì)占據(jù)內(nèi)存中連續(xù)多個(gè)存儲(chǔ)單元,起始存儲(chǔ)單元的地址稱為該數(shù)據(jù)的內(nèi)存首地址。利用id函數(shù)可以查看一個(gè)數(shù)據(jù)的內(nèi)存首地址。xisy等價(jià)于id(x)==id(y),即判斷x和y的內(nèi)存首地址是否相同;xisnoty等價(jià)于id(x)!=id(y),即判斷x和y的內(nèi)存首地址是否不相同。提示運(yùn)算符使用方法功能描述isxisy如果x和y對(duì)應(yīng)相同的存儲(chǔ)單元,則返回True;否則,返回Falseisnotxisnoty如果x和y對(duì)應(yīng)不同的存儲(chǔ)單元,則返回True;否則,返回False身份運(yùn)算符例如:1 x,y=15,152 print(xisy)#輸出:True3 print(xisnoty)#輸出:False4 print(xis15)#輸出:True5 x,y=[1,2,3],[1,2,3]6 print(xisy)#輸出:False7 print(x==y)#輸出:True8 print(xis[1,2,3])#輸出:False9 x=y10 print(xisy)#輸出:True如果賦值運(yùn)算符“=”的右操作數(shù)也是一個(gè)變量,則賦值運(yùn)算后左操作數(shù)變量和右操作數(shù)變量會(huì)對(duì)應(yīng)相同的存儲(chǔ)單元。提示:身份運(yùn)算符需要關(guān)注列表、集合、字典這3種類型的數(shù)據(jù)對(duì)象是否對(duì)應(yīng)相同的存儲(chǔ)單元,以避免對(duì)元素的意外修改。提示:成員運(yùn)算符成員運(yùn)算符成員運(yùn)算用于判斷一個(gè)可迭代對(duì)象(如序列、集合或字典)中是否包含某個(gè)元素。運(yùn)算符使用方法功能描述inxiny如果x是可迭代對(duì)象y的一個(gè)元素,則返回True;否則,返回Falsenotinxnotiny如果x不是可迭代對(duì)象y的一個(gè)元素,則返回True;否則,返回False成員運(yùn)算符例如:1 x,y=15,['abc',15,True]2 print(xiny)#輸出:True3 x=204 print(xnotiny)#輸出:True5 y=(20,'Python')6 print(xiny)#輸出:True7 x,y='Py','Python'8 print(xiny)#輸出:True9 x,y=20,{15,20,25}10 print(xiny)#輸出:True11 x,y='one',{'one':1,'two':2,'three':3}12 print(xiny)#輸出:True13 print(1iny)#輸出:False使用成員運(yùn)算符判斷一個(gè)數(shù)據(jù)是否是字典中的元素,實(shí)際上就是判斷該數(shù)據(jù)是否是字典中某個(gè)元素的鍵。提示:序列運(yùn)算符和運(yùn)算符優(yōu)先級(jí)序列運(yùn)算符和運(yùn)算符優(yōu)先級(jí)序列運(yùn)算符用于序列操作的運(yùn)算符運(yùn)算符使用方法功能描述+(拼接)x+y將序列x和序列y中的元素連接,生成一個(gè)新的序列*(重復(fù))x*n將序列x中的元素重復(fù)n次,生成一個(gè)新的序列序列運(yùn)算符例如:1 x,y=[12,False],['abc',15,True]2 z=x+y#x和y拼接后的結(jié)果賦給z3 print(z)#輸出:[12,False,'abc',15,True]4 s1,s2='我喜歡學(xué)習(xí)','Python'5 s=s1+s2#s1和s2拼接后的結(jié)果賦給s6 print(s)#輸出:我喜歡學(xué)習(xí)Python7 x_3=x*3#將序列x的元素重復(fù)3次,生成一個(gè)新序列并賦給x_38 print(x_3)#輸出:[12,False,12,False,12,False]9 s_3=s*3#將字符串s重復(fù)3次,生成一個(gè)新字符串并賦給s_310 print(s_3)#輸出:我喜歡學(xué)習(xí)Python我喜歡學(xué)習(xí)Python我喜歡學(xué)習(xí)Python運(yùn)算符優(yōu)先級(jí)優(yōu)先級(jí)對(duì)于具有不同優(yōu)先級(jí)的運(yùn)算符,會(huì)先完成高優(yōu)先級(jí)的運(yùn)算,再完成低優(yōu)先級(jí)的運(yùn)算。例如,表達(dá)式3+5*6中,“*”優(yōu)先級(jí)高于“+”,因此會(huì)先計(jì)算5*6、得到30,再計(jì)算3+30。在一個(gè)表達(dá)式中,通常會(huì)包含多個(gè)運(yùn)算,這就涉及到了運(yùn)算的順序,其由兩個(gè)因素確定:運(yùn)算符的優(yōu)先級(jí)和運(yùn)算符的結(jié)合性。結(jié)合性對(duì)于具有相同優(yōu)先級(jí)的運(yùn)算符,其運(yùn)算順序由結(jié)合性來(lái)決定。結(jié)合性包括左結(jié)合和右結(jié)合兩種,左結(jié)合是按照從左向右的順序完成計(jì)算,而右結(jié)合是按照從右向左的順序完成計(jì)算。例如,表達(dá)式5-3+6中,“-”和“+”優(yōu)先級(jí)相同,它們是左結(jié)合的運(yùn)算符,因此會(huì)先計(jì)算5-3、得到2,再計(jì)算2+6;表達(dá)式a=b=1中,“=”是右結(jié)合的運(yùn)算符,因此會(huì)先計(jì)算b=1,再計(jì)算a=b。運(yùn)算符優(yōu)先級(jí)優(yōu)先級(jí)運(yùn)算符描述1**乘方2~、+、-按位取反、正號(hào)、負(fù)號(hào)3*、/、//、%乘/序列重復(fù)、除、整除、模4+、-加/序列連接、減5>>、<<右移位、左移位6&按位與7^按位異或8|按位或9>、<、>=、<=、==、!=、is、isnot、in、notin比較運(yùn)算符、身份運(yùn)算符、成員運(yùn)算符10=、+=、-=、*=、/=、//=、%=、**=賦值運(yùn)算符11not邏輯非12and邏輯與13or邏輯或條件語(yǔ)句概述條件語(yǔ)句概述條件語(yǔ)句概述通過(guò)設(shè)置條件,可以使得某些語(yǔ)句在條件滿足時(shí)才會(huì)執(zhí)行。1 輸入成績(jī)并保存到變量score中2 如果score小于603 輸出“不及格”在解決一個(gè)實(shí)際問(wèn)題時(shí),可以先使用流程圖、自然語(yǔ)言或偽代碼等形式描述數(shù)據(jù)處理流程(即算法設(shè)計(jì)),再按照設(shè)計(jì)好的流程編寫程序(即算法實(shí)現(xiàn))。這樣,在設(shè)計(jì)算法時(shí)可以忽略具體代碼實(shí)現(xiàn)、而專注于如何解決問(wèn)題,有利于避免程序的邏輯錯(cuò)誤。提示開(kāi)始輸入成績(jī)否結(jié)束輸出“不及格”是成績(jī)是否小于60?條件語(yǔ)句概述通過(guò)設(shè)置條件,可以使得某些語(yǔ)句在條件滿足時(shí)才會(huì)執(zhí)行。1 輸入成績(jī)并保存到變量score中2 如果score小于603 輸出“不及格”4 否則5 輸出“及格”在繪制流程圖時(shí),要求必須從“開(kāi)始”出發(fā),經(jīng)過(guò)任何處理后必然能到達(dá)“結(jié)束”。另外,流程圖中使用的圖形符號(hào)有著嚴(yán)格規(guī)定,“開(kāi)始”和“結(jié)束”一般放在圓角矩形或圓中,數(shù)據(jù)處理放在矩形框中,而條件判斷放在菱形框中。提示開(kāi)始輸入成績(jī)否結(jié)束輸出“不及格”是成績(jī)是否小于60?輸出“及格”條件語(yǔ)句概述開(kāi)始輸入成績(jī)是結(jié)束輸出“及格”否成績(jī)是否小于60?輸出“不及格”輸出“中等”輸出“良好”輸出“優(yōu)秀”是否成績(jī)是否小于70?是否成績(jī)是否小于80?是否成績(jī)是否小于90?是成績(jī)是否小于等于100?條件語(yǔ)句概述例如:1 輸入成績(jī)并保存到變量score中2 如果score小于603 輸出“不及格”4 否則,如果score小于705 輸出“及格”6 否則,如果score小于807 輸出“中等”8

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論