![Python程序設(shè)計基礎(chǔ) 課件全套 張勇 第1-10章 Python語言入門-網(wǎng)絡(luò)爬蟲_第1頁](http://file4.renrendoc.com/view12/M05/3E/21/wKhkGWZuSYOAPlD6AAB2gr1VXGw160.jpg)
![Python程序設(shè)計基礎(chǔ) 課件全套 張勇 第1-10章 Python語言入門-網(wǎng)絡(luò)爬蟲_第2頁](http://file4.renrendoc.com/view12/M05/3E/21/wKhkGWZuSYOAPlD6AAB2gr1VXGw1602.jpg)
![Python程序設(shè)計基礎(chǔ) 課件全套 張勇 第1-10章 Python語言入門-網(wǎng)絡(luò)爬蟲_第3頁](http://file4.renrendoc.com/view12/M05/3E/21/wKhkGWZuSYOAPlD6AAB2gr1VXGw1603.jpg)
![Python程序設(shè)計基礎(chǔ) 課件全套 張勇 第1-10章 Python語言入門-網(wǎng)絡(luò)爬蟲_第4頁](http://file4.renrendoc.com/view12/M05/3E/21/wKhkGWZuSYOAPlD6AAB2gr1VXGw1604.jpg)
![Python程序設(shè)計基礎(chǔ) 課件全套 張勇 第1-10章 Python語言入門-網(wǎng)絡(luò)爬蟲_第5頁](http://file4.renrendoc.com/view12/M05/3E/21/wKhkGWZuSYOAPlD6AAB2gr1VXGw1605.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章Python語言入門ContentsPython語言Python語言開發(fā)環(huán)境Python語言程序結(jié)構(gòu)本章小結(jié)習(xí)題01Python語言Python語言是目前最簡潔高效的計算機(jī)語言,可基于各類操作系統(tǒng)編寫應(yīng)用軟件,適合于各個應(yīng)用領(lǐng)域和年齡段的程序設(shè)計人員。本章將介紹Python語言的安裝與開發(fā)環(huán)境,并詳細(xì)介紹Python程序的框架結(jié)構(gòu),供讀者快速入門。1.1Python語言計算機(jī)可以直接完成的運算稱為機(jī)器指令,機(jī)器指令由操作碼和操作數(shù)組成,操作碼和操作數(shù)均為二進(jìn)制數(shù),操作碼指示CPU對操作數(shù)施加所需要的運算操作。計算機(jī)只能運行由機(jī)器指令組成的程序,也稱為機(jī)器語言程序。早期的計算機(jī)科學(xué)家,正是使用機(jī)器語言進(jìn)行程序設(shè)計。1.1Python語言計算機(jī)語言發(fā)展史上具有變革性意義的事件是C語言的誕生。C語言是一種接近于自然語言且具有地址訪問能力的計算機(jī)語言,C語言對計算機(jī)的發(fā)展具有其他語言無法比擬的貢獻(xiàn),例如,C語言可以開發(fā)各類操作系統(tǒng)軟件,使計算機(jī)的軟件變得易用且界面友好;C語言使計算機(jī)硬件感覺到前所未有的危機(jī),計算機(jī)硬件一直成為計算機(jī)發(fā)展的瓶頸;C語言使計算機(jī)編程大眾化,快速催生了內(nèi)容豐富和形式多樣的海量應(yīng)用軟件。1.1Python語言眾多計算機(jī)語言的涌現(xiàn),使得計算機(jī)使用者開始考慮學(xué)習(xí)和掌握哪種計算機(jī)語言?可能考慮的因素有:(1)該計算機(jī)語言是否簡單易學(xué),語法是否簡潔優(yōu)美;(2)該機(jī)算機(jī)語言是否功能強大,可以滿足所學(xué)專業(yè)和所從事工作的需要;(3)該計算機(jī)語言是否具有巨大的用戶群和強大的生態(tài)圈,以促進(jìn)資源分享、學(xué)習(xí)和交流;(4)該計算機(jī)語言是否具有優(yōu)秀的可移值性,可應(yīng)用于各類計算機(jī)平臺上;(5)該計算機(jī)語言是否具有強大的生命力,可持續(xù)發(fā)展等。Python語言具備上述全部的肯定回答。1.1Python語言登錄Python官網(wǎng)(/),下載Python語言最新版本。若是64位的Windows系統(tǒng)計算機(jī),需要下載安裝程序“python-3.10.4-amd64.exe”。按照安裝說明安裝好Python語言后,在Windows“開始”菜單中將出現(xiàn)菜單“Python3.10”,其下具有三個子菜單項“IDLE”、“Python3.1064-bit”和“Python3.10ModuleDocs(64-bit)”,依次啟動Python語言程序殼、Python語言內(nèi)核和Python程序包。1.1Python語言啟動“命令提示符”窗口,輸入“python”,如果得到如下所示信息,說明Python軟件安裝成功。顯示Python軟件版本信息1.1Python語言Python作為一種計算機(jī)語言,可像C語言等一樣編寫計算機(jī)程序。單擊菜單“File|NewFile(Ctrl+N)”彈出下圖所示界面。IDLE編輯Python程序界面1.1Python語言運行Python程序方式單擊菜單“Run|RunModuleF5”,將在IDLE中顯示執(zhí)行結(jié)果。打開“命名提示符”窗口,工作目錄設(shè)為“E:\ZYPythonPrj\ZYPrj01”,輸入“pythonmain.py”,將得到運行結(jié)果。1.1Python語言左表明Python語言程序的執(zhí)行離不開Python內(nèi)核,其執(zhí)行方式可視為“翻譯”執(zhí)行方式。Windows系統(tǒng)用戶可能更希望Python語言程序可以編譯鏈接為一個可執(zhí)行文件。Python語言程序的這種“翻譯”執(zhí)行方式不是它的缺點。這樣做的目的,是為了增強程序的可移植性。只要計算機(jī)系統(tǒng)中安裝了Python語言,所有的Python程序均可以移植該計算機(jī)系統(tǒng)上執(zhí)行?!懊钐崾痉贝翱谙逻\行Python程序1.1Python語言程序員很少使用IDLE編輯器編寫Python程序,這是因為VisualStudio和PyCharm等提供了更先進(jìn)易用的編輯、翻譯、測試和運行集成開發(fā)環(huán)境。下節(jié)將介紹這兩個優(yōu)秀的集成開發(fā)環(huán)境。02Python語言開發(fā)環(huán)境1.2Python語言開發(fā)環(huán)境任意編輯軟件均可用于編寫Python語言程序,那些集成了Python語言語法智能感知技術(shù)且能實現(xiàn)Python語言程序的調(diào)試與執(zhí)行的集成開發(fā)環(huán)境,才是首選的Python語言程序開發(fā)環(huán)境。推薦兩個最有名的Python語言程序集成開發(fā)環(huán)境,即VisualStudio和PyCharm。這兩個集成開發(fā)環(huán)境,均具有Python語言語法智能感知技術(shù),即輸入Python語言函數(shù)后,將自動提示參數(shù)個數(shù)與用法等信息,并可自動調(diào)整程序代碼的格式。
1.2.1VisualStudio集成開發(fā)環(huán)境
登錄到網(wǎng)站:/zh-hans/下載VisualStudio集成開發(fā)環(huán)境的在線安裝器VisualStudioInstaller。啟動在線安裝器VisualStudioInstaller后,選中“Python開發(fā)”組件,同時建議選中“.NET桌面開發(fā)”、“使用C++的桌面開發(fā)”和“通用Windows平臺開發(fā)”,后三者使VisualStudio可以編寫C++/C#應(yīng)用程序。
1.2.1VisualStudio集成開發(fā)環(huán)境按照安裝提示完成VisualStudio2022的安裝后,啟動VisualStudio開發(fā)環(huán)境,在啟動界面選擇“創(chuàng)建新項目”。VisualStudio安裝
1.2.1VisualStudio集成開發(fā)環(huán)境輸入如圖所示的代碼,按下快捷鍵“Shift+Alt+F5”將啟動Python“交互式窗口”,如圖中的左下方窗口,顯示程序“ZYPrj02.py”的執(zhí)行結(jié)果;或者,按下快捷鍵“Ctrl+F5”,啟動“命令提示符”窗口,并在其中顯示程序運行結(jié)果。VisualStudio開發(fā)Python應(yīng)用程序界面
1.2.1VisualStudio集成開發(fā)環(huán)境輸入如圖所示的代碼,按下快捷鍵“Shift+Alt+F5”將啟動Python“交互式窗口”,如圖中的左下方窗口,顯示程序“ZYPrj02.py”的執(zhí)行結(jié)果;或者,按下快捷鍵“Ctrl+F5”,啟動“命令提示符”窗口,并在其中顯示程序運行結(jié)果。VisualStudio開發(fā)Python應(yīng)用程序界面
1.2.1VisualStudio集成開發(fā)環(huán)境import語句不是必須的,但是一般的Python程序都需要裝載大量的模塊。Python語言具有大量內(nèi)置程序包,如前面圖中math等,也有大量的擴(kuò)展包,如numpy等。擴(kuò)展包需要單獨安裝。安裝numpy程序包
1.2.2PyCharm集成開發(fā)環(huán)境登錄到網(wǎng)站“/pycharm/”,下載PyCharm軟件,其Community最新版本為2022.1。按照安裝說明安裝好PyCharm軟件后,啟動PyCharm軟件,在歡迎界面中選擇“新建項目”。PyCharm新建項目窗口
在“位置”處輸入“E:\ZYPythonPrj\ZYPrj03”,選中“創(chuàng)建main.py”歡迎腳本,然后,單擊“創(chuàng)建”得到右圖所示。單擊菜單“文件|設(shè)置”,在其彈出的窗口中,找到“插件”,并安裝“Chinese(Simplified)LanguagePack/中文語言包”。項目ZYPrj03工作窗口
1.2.2PyCharm集成開發(fā)環(huán)境單擊上一頁圖中菜單“文件|設(shè)置”,在其彈出的窗口中,找到“Python解釋器”。單擊“+”號,在彈出的窗口,搜索并安裝所需要的擴(kuò)展包,這里至少應(yīng)安裝numpy、pandas和matplotlib,這三個包依次為數(shù)學(xué)運算、數(shù)據(jù)分析和繪圖服務(wù)的專用軟件包。安裝擴(kuò)展包窗口
1.2.2PyCharm集成開發(fā)環(huán)境
1.2.2PyCharm集成開發(fā)環(huán)境項目ZYPrj03自動創(chuàng)建了一個程序文件main.py,在文件main.py中,以“#”開頭的行為注釋,是不可執(zhí)行的指令。因此,main.py中的可執(zhí)行語句如下程序段所示。1defprint_hi(name):2print(f'Hi,{name}')34if__name__=='__main__':5print_hi('PyCharm')
1.2.2PyCharm集成開發(fā)環(huán)境Python語言程序按照縮進(jìn)關(guān)系確定語句組。在程序段中,第1~2行為一組,第4~5行為一組。這里第1行的語句“defprint_hi(name):”表示定義函數(shù)print_hi,其具有一個形式參數(shù)name;其下縮進(jìn)的所有語句將均屬于該函數(shù),直到遇到與語句“defprint_hi(name):”處于相同縮進(jìn)位置的語句為止,即遇到第4行的語句“if__name__=='__main__':”為止,后者不屬于前者。第2行的語句“print(f'Hi,{name}')”使用格式輸出方式輸出“Hi,”和name參數(shù)的值。
1.2.2PyCharm集成開發(fā)環(huán)境第4~5行為一組。第4行的“__name__”為一個Python語言的全局標(biāo)號(或稱全局變量),在其所在的模塊(即文件)中,其值固定為“__main__”,注意:這里的main與文件名“main.py”中的main毫無關(guān)系。因此,當(dāng)執(zhí)行main.py文件時,第4行的if語句為真,第5行的語句“print_hi('PyCharm')”將被執(zhí)行,其調(diào)用自定義的print_hi函數(shù)輸出“Hi,PyCharm”。03Python語言程序結(jié)構(gòu)1.3Python語言程序結(jié)構(gòu)單擊菜單“文件|新建Alt+Insert|Python文件”,然后,輸入文件名“zym0101”,回車后進(jìn)入如圖所示窗口。輸入zym0101.py文件的代碼。安裝擴(kuò)展包窗口程序文件zym0101.py上程序段中,第1~2行定義了函數(shù)zymax,具有兩個參數(shù)x和y,返回兩者的較大者;第4行的語句“print(__name__)”輸出全局符號“__name__”;第5~7行為一個if語句組,因第5行的條件為真,故第6~7行的語句被執(zhí)行:第6行的語句“print('max=',zymax(3,5))”調(diào)用庫函數(shù)print和自定義函數(shù)zymax,輸出“max=5”;第7行輸出全局符號“__name__”。文件zym0101.py的執(zhí)行結(jié)果下部分窗口所示。第4行和第7行輸出的“__name__”均為“__main__”。1.3Python語言程序結(jié)構(gòu)一般地Python語言程序的結(jié)構(gòu)滿足以下規(guī)則:(1)借助于import裝載程序模塊。import語句可位于程序中任意位置,一般將import語句放在程序開頭。如果不需要裝載其他程序模塊,則不需要import語句;(2)將可執(zhí)行的語句放在if語句組中,if語句組的頭部(即條件判斷部分)的語句固定為“if__name__=='__main__':”。這樣,if語句組中的全部語句只有當(dāng)其所在的文件被執(zhí)行時,才被執(zhí)行到。可以在這個if語句組中放置測試代碼,用于測試該程序文件中的類和函數(shù)的正確性。一般地,將這個if語句組放置在程序文件的末尾。這部分稱為文件(或模塊)的可直接執(zhí)行部分。1.3Python語言程序結(jié)構(gòu)(3)程序文件中可以包含任意多的類和函數(shù),建議將這些類和函數(shù)放置于import語句的后面,但位于“if__name__=='__main__':”語句組的前面。1.3Python語言程序結(jié)構(gòu)按照上述規(guī)則,向項目ZYPrj03中添加一個新的Python文件zym0103.py,程序段如下:程序段分為三部分第一部分為第1~4行,為import部分,裝載程序中用到的模塊這里裝載了Python語言內(nèi)置模塊math、os、time和random,分別為數(shù)學(xué)、操作系統(tǒng)、時間和隨機(jī)數(shù)發(fā)生器模塊。第二部分為第6~22行,為類定義和函數(shù)定義部分。第三部分為第24~44行,為當(dāng)前文件的測試程序,用于測試本文件中的類和函數(shù)的正確性。這部分內(nèi)容稱為可直接執(zhí)行部分,但當(dāng)該模塊被其他模塊調(diào)用時,這部分內(nèi)容對于其他模塊不可見。1.3Python語言程序結(jié)構(gòu)右圖是典型的Python語言程序結(jié)構(gòu)。簡單介紹第三部分內(nèi)容,即第24~44行的語句的含義。1.3Python語言程序結(jié)構(gòu)文件zym0103.py及其運行結(jié)果第25行、第41~44行組成一個功能單元,用于測試程序的運行時間。第25行的語句“time1=time.time()”調(diào)用time模塊的函數(shù)time記錄系統(tǒng)當(dāng)前的時間,形象地稱為時間戳;第41行的語句“time.sleep(0.2)”調(diào)用time模塊的函數(shù)sleep延時等待0.2秒;第42行的語句“time2=time.time()”再次將當(dāng)前的時間戳賦給time2;第43行的語句“dtime=time2-time1”得到兩個時間戳的差,單位為秒;第44行輸出dtime,即為第25~42行間的代碼的運行時間,如圖下方窗口中的“timeelapsed:0.2151966094970703s”所示。第27~32行的代碼用到了自定義的類Complex,表示復(fù)數(shù)類。1.3Python語言程序結(jié)構(gòu)第34行的語句“print(os.getcwd())”輸出當(dāng)前工程所在的目錄。第36行的語句“random.seed(299792458)”調(diào)用模塊random的seed函數(shù)設(shè)置偽隨機(jī)數(shù)發(fā)生器的“種子”為“299792458”,第37行的語句“print(random.randint(1,10))”將以該種子為初值迭代值,生成一個1至10的偽隨機(jī)數(shù)。設(shè)置“種子”的好處在于,后續(xù)的偽隨機(jī)數(shù)發(fā)生器將生成固定的偽隨機(jī)序列,這里是6,如圖下方所示;否則,沒有第36行,每次執(zhí)行第37行都將得到一個不同的偽隨機(jī)數(shù)。建議在第37行后再調(diào)用一次“random.seed()”恢復(fù)默認(rèn)的偽隨機(jī)數(shù)發(fā)生器。1.3Python語言程序結(jié)構(gòu)第39行的語句“print(math.sin(math.pi/4))”調(diào)用math模塊的sin函數(shù)計算/4的正弦值。這里的math.pi為圓周率。
第24~44行為一個if語句組。第25~44行的語句均處于同一等級的縮進(jìn)層次,這些語句均為if語句的語句體,當(dāng)?shù)?4行的條件為真時,這些語句將順序執(zhí)行;若第24行的if條件為假,這些語句不被執(zhí)行。1.3Python語言程序結(jié)構(gòu)04本章小結(jié)本章重點介紹Python語言的特色和Python語言程序的集成開發(fā)環(huán)境,Python語言程序設(shè)計秉承著極致精簡的原則,借助于Python“翻譯”器執(zhí)行,具有極強的跨平臺移植能力。Python語言程序依靠其代碼間的位置縮進(jìn)關(guān)系確定代碼間的依賴關(guān)系,一般地,可將Python程序分成三部分,即import部分、類與函數(shù)定義部分和模塊內(nèi)部可執(zhí)行部分。1.4本章小結(jié)05習(xí)題
習(xí)題
第二章Python編程基礎(chǔ)ContentsPython語言輸入與輸出Python基本數(shù)據(jù)類型Python運算符列表字符串本章小結(jié)習(xí)題01Python語言輸入與輸出任意計算機(jī)程序都應(yīng)有零個或多個輸入,且至少應(yīng)有一個輸出。一般地,計算機(jī)程序按照指令位置的先后順序執(zhí)行;當(dāng)遇到分支指令和循環(huán)指令時,程序?qū)⒂袟l件的跳轉(zhuǎn)到相應(yīng)指令處執(zhí)行。本章將介紹按順序執(zhí)行的簡單Python語言程序,并借助于這類程序討論Python語言的數(shù)據(jù)表示方法和基本運算符,然后詳細(xì)討論最常用的數(shù)據(jù)結(jié)構(gòu)——列表和字符串,下面從介紹Python語言程序的輸入和輸出函數(shù)開始。2.1Python語言輸入與輸出在控制臺應(yīng)用程序工作模式下,Python語言的輸入函數(shù)為input,輸出函數(shù)為print。函數(shù)input的用法:s=input()或s=input('提示信息')函數(shù)print的用法:print()print(待輸出的一個或多個對象)print(待輸出的一個或多個對象,sep='',end='\n',file=sys.stdout)2.1Python語言輸入與輸出Python語言輸入函數(shù)input和輸出函數(shù)print的用法實例:1name=input('Pleaseinputyourname:')2print(type(name))3print(isinstance(name,str))4print(name)第1行調(diào)用Python內(nèi)置函數(shù)input將鍵盤輸入的字符串給name,input函數(shù)具有提示信息“Pleaseinputyourname:”。輸入了“YongZhang”,如果直接回車,將輸入空字符。2.1Python語言輸入與輸出第2行調(diào)用Python內(nèi)置函數(shù)type得到name的類型,然后,調(diào)用print函數(shù)輸出這個類型。第3行print(isinstance(name,str))調(diào)用內(nèi)置函數(shù)isinstance判斷name是否為str字符串類型,如果是,則返回真;否則返回假。第4行“print(name)”調(diào)用print函數(shù)輸出name。輸入了“YongZhang”,這里將輸出“YongZhang”,可見輸入以回車作為結(jié)束符。2.1Python語言輸入與輸出6age=input('Pleaseinputyourage:')7n1=int(age)8n2=int(age,10)9print(type(n2))10s1=str(n2)11s2=hex(n2)12print('Myage:'+str(n1),n2,s1,s2,sep=',',end='.\n')2.1Python語言輸入與輸出第6行調(diào)用input函數(shù)將鍵盤輸入的字符串賦給age,input函數(shù)的參數(shù)“Pleaseinputyourage:”為提示信息。第7行調(diào)用內(nèi)置函數(shù)int將字符串a(chǎn)ge轉(zhuǎn)化為整數(shù),賦給n1。第8行展示了完整的int函數(shù)的調(diào)用形式,這里將以十進(jìn)制數(shù)形式表示的字符串轉(zhuǎn)化為整數(shù),賦給n2。這里的參數(shù)10表示age為十進(jìn)制數(shù)組成的字符串。2.1Python語言輸入與輸出第9行輸入n2的類型,將得到“<class'int'>”,表示n2為整型int,整型int在Python語言中也是一個類。第10行調(diào)用內(nèi)置函數(shù)str將n2轉(zhuǎn)化為字符串,賦給s1。第11行調(diào)用內(nèi)置函數(shù)hex將n2轉(zhuǎn)化為十六進(jìn)制數(shù),賦給s2。第12行調(diào)用print函數(shù)輸出結(jié)果“Myage:28,28,28,0x1c.”?!?Myage:'+str(n1)”中的“+”號表示連接兩個字符串;print函數(shù)可以輸出字符串和整數(shù)等各種類型的數(shù)據(jù);“sep=','”表示輸出的兩個對象間用逗號分開;“end='.\n'”表示輸出最后一個對象后,將輸出一個回車換行。2.1Python語言輸入與輸出14fd=open('zy0201.txt',mode='w')15print(n1,n2,s1,s2,sep=',',end='.\n',file=fd)16fd.close()2.1Python語言輸入與輸出第14行在當(dāng)前工程所在目錄下創(chuàng)建一個文件zy0201.txt,“mode='w'”表示打開方式為“寫入”類型,打開的文件對象設(shè)為fd。將文件對象fd不再使用時,應(yīng)執(zhí)行第16行“fd.close()”關(guān)閉它。第15行使用關(guān)鍵字參數(shù)“file=fd”將文件對象作為輸出設(shè)備,即向文件對象fd中寫入信息“28,28,28,0x1c.”。2.1Python語言輸入與輸出Python語言程序設(shè)計的一些規(guī)則如下:(1)Python語言中沒有“變量”這種概念,無法像其C語言那樣定義一個變量再給變量賦值。因此,也沒有變量類型的說法。需要為一些量指定名稱時,直接將那些量賦給一些合法的標(biāo)識符就行,這些標(biāo)識符的用法類似于“變量”的用法,但含義上有本質(zhì)的區(qū)別,Python中這些標(biāo)識符并不指代具體的“變量”內(nèi)存空間。2.1Python語言輸入與輸出(2)Python中所有數(shù)據(jù)類型均為類,因此,所有的數(shù)據(jù)均為對象。所以,Python是完整意義上的面向?qū)ο笳Z言。(3)雖然Python語言中沒有變量和變量類型的說法,但是,Python語言具有明確的數(shù)據(jù)類型。(4)Python語言使用縮進(jìn)表示語句間的關(guān)系。2.1Python語言輸入與輸出其他一些規(guī)則如下:(1)注釋使用“#”號。任一行中,“#”及其后續(xù)的內(nèi)容均為注釋,不會執(zhí)行。選中多行語句時,按下快捷鍵“Ctrl+/”可以將選中的語句注釋掉。(2)Python語言具有優(yōu)秀的內(nèi)存清理機(jī)制,程序中不再使用的內(nèi)存空間,將被自動釋放掉。這是所有計算機(jī)語言都極力追求的內(nèi)存管理機(jī)制。2.1Python語言輸入與輸出(3)Python中文件稱為模塊,比模塊更大的概念稱為“包”,可以理解為包含了多個文件的目錄;比模塊更小的概念稱為類和函數(shù),類和函數(shù)是文件中定義的類型。借助于import可以在當(dāng)前模塊中包含其他的模塊,從而實現(xiàn)代碼的復(fù)用。Python語言的內(nèi)置模塊無需import,可以直接使用這些內(nèi)置模塊及其中的函數(shù)。Python語言是實現(xiàn)團(tuán)隊協(xié)作編程的最佳選擇。2.1Python語言輸入與輸出程的方式因人而異,但是當(dāng)程序稍大后,往往需要借助于“調(diào)試”功能發(fā)現(xiàn)程序的錯誤。PyCharm提供了優(yōu)秀的調(diào)試功能。圖中,單擊程序行號所在處,可以為該行語句設(shè)置斷點。其下方窗口中具有“調(diào)試器”和“控制臺”選項。調(diào)試工作窗口2.1Python語言輸入與輸出1importre23if__name__=='__main__':4name=input('Pleaseinputyourname:')5print(type(name))6print(isinstance(name,str))7print(name)2.1Python語言輸入與輸出第1行使用import裝載了re模塊,re模塊為正則表達(dá)式模塊,正則表達(dá)式是指與字符串匹配相關(guān)的規(guī)則表達(dá)式。第3行“if__name__=='__main__':”使得第4~20行均為本模塊內(nèi)可執(zhí)行的語句,當(dāng)本模塊被其他模塊調(diào)用時,這些語句不被執(zhí)行。2.1Python語言輸入與輸出9age=input('Pleaseinputyourage:')10ifre.match('^[1-9]\d*$',age)!=None:11n1=int(age)12n2=int(age,10)13print(type(n2))14s1=str(n2)15s2=hex(n2)16print('Myage:'+str(n1),n2,s1,s2,sep=',',end='.\n')2.1Python語言輸入與輸出
第9行“age=input('Pleaseinputyourage:')”將鍵盤輸入的字符串賦給age。
第10行語句使用了正則表達(dá)式判斷age字符串中是否只含有數(shù)字,且不以數(shù)字0開頭。這里“re.match”表示調(diào)用模塊re的match函數(shù),如果它的第一個參數(shù)(正則表達(dá)式)和第二個參數(shù)(字符串)匹配成功,則返回匹配的字符串;否則,返回None。
如果第10行的if語句條件為真,即字符串a(chǎn)ge中僅包含有效的數(shù)字字符,則執(zhí)行第11~20行。2.1Python語言輸入與輸出
前面的正則表達(dá)式“^[1-9]\d*$”表示從字符串的頭部(用^表示)開始匹配,一直匹配到字符串的尾部(用$表示),“[1-9]”表示匹配字符串中的一個數(shù)字1至9的字符,“\d”可以匹配數(shù)字0至9的字符,“*”表示重復(fù)匹配0次或多次,“\d*”表示匹配數(shù)字0~9的字符0次或多次。因此正則表達(dá)式“^[1-9]\d*$”表示匹配的字符串應(yīng)為“以數(shù)字1至9的字符開頭,后續(xù)字符只能為0至9的數(shù)字字符”。2.1Python語言輸入與輸出18fd=open('zy0201.txt',mode='w')19print(n1,n2,s1,s2,sep=',',end='.\n',file=fd)20fd.close()02Python基本數(shù)據(jù)類型2.2Python基本數(shù)據(jù)類型Python語言的基本數(shù)據(jù)類型包括整數(shù)、浮點數(shù)和復(fù)數(shù)等數(shù)值類型、布爾類型、字符串類型、字節(jié)串類型和空類型等。字符串類型將在第2.5節(jié)介紹,空類型只有一個值None,字節(jié)串類型為形如“b'Hello'”(Hello可替換為任意ASCII字符或任意8比特表示的字符(擴(kuò)展ASCII集中的字符))的字符串,布爾類型只有Ture和False兩個值。這里重點介紹數(shù)值類型的數(shù)據(jù)類型。2.2Python基本數(shù)據(jù)類型Python語言中,數(shù)值類型的規(guī)則如下:(1)整數(shù)是指十進(jìn)制整數(shù),為不帶小數(shù)點的數(shù)值,具有無限精度(嚴(yán)格上講,整數(shù)的大小受計算機(jī)內(nèi)存的大小限制)。而二進(jìn)制、八進(jìn)制和十六制制的整數(shù)通常以字符串的形式表示。例如,3、5、100、-8等均為整數(shù),將這些數(shù)作為type函數(shù)的參數(shù),將返回“<class‘int’>”。2.2Python基本數(shù)據(jù)類型(2)浮點數(shù)占8個字節(jié),由于Python語言是用C語言實現(xiàn)的,Python中的浮點數(shù)就是C語言中的double類型,存儲格式為IEEE-754標(biāo)準(zhǔn)。浮點數(shù)是指帶有小數(shù)點的數(shù),或者是帶有指數(shù)部分的數(shù),例如,3.、.12、5.3、4e1、2e0等都是浮點數(shù),將這些數(shù)作為type函數(shù)的參數(shù)將返回“<class'float'>”。2.2Python基本數(shù)據(jù)類型(3)復(fù)數(shù)的實部和虛部一定都是浮點數(shù),即使向?qū)嵅炕蛱摬抠x了整數(shù),也自動轉(zhuǎn)化為浮點數(shù)。例如,a=complex(3,5)得到復(fù)數(shù)a,其實部為a.real,虛部分為a.imag,此時,type(a)將返回“<class'complex'>”,而type(a.real)和type(a.imag)都將返回“<class'float'>”。2.2Python基本數(shù)據(jù)類型Python語言中,復(fù)數(shù)的常規(guī)運算:(1)求模運算。借助于內(nèi)置函數(shù)abs可以計算一個復(fù)數(shù)的模,也可以計算一個整數(shù)或浮點數(shù)的絕對值。abs函數(shù)作用于復(fù)數(shù)和浮點數(shù)時返回浮點數(shù),而作用于整數(shù)時,返回整數(shù)。(2)求輻角。需要裝載cmath包(importcmath),然后,執(zhí)行“cmath.phase(a)”返回復(fù)數(shù)a的輻角,當(dāng)a為正數(shù)時,返回0.0;當(dāng)a為“1j”。03Python語言程序結(jié)構(gòu)2.3Python運算符Python語言中,數(shù)據(jù)的基本處理借助于運算符實現(xiàn)。引用早期的匯編語言的說法,運算符稱為操作符,數(shù)據(jù)稱為操作數(shù)。嚴(yán)格意義上,Python語言只有單目運算符和雙目運算符。運算符具有優(yōu)先級和結(jié)合性(指運算順序)等屬性,在一個(表達(dá)式)語句中,先計算優(yōu)先級高的運算符(及其直接相關(guān)的操作數(shù));再計算優(yōu)先級較低的運算符;同級別優(yōu)先級的運算符,按約定的結(jié)合性(運算順序)進(jìn)行運算,一般為自左向右運算(賦值運算符從右向左)。2.3.1算術(shù)運算符Python語言的算術(shù)運算符:2.3.1算術(shù)運算符2.3.2位運算符2.3.3關(guān)系運算符序號運算符含義用法舉例1==等于3==5得到False2!=不等于3!=5得到True3>大于5>3得到True4>=大于等于5>=3得到True5<小于5<3得到False6<=小于等于5<=3得到False2.3.3關(guān)系運算符在Python語言中,關(guān)系運算符可以直接組合在一起使用,例如,3<=5>4在Python語言中返回True;5>3<8>4將返回真;10>7>5>3也將返回True。盡量避免這種組合使用。關(guān)系運算符連接成的表達(dá)式稱為關(guān)系表達(dá)式,關(guān)系表達(dá)式的結(jié)果為邏輯值True或False。2.3.4關(guān)系運算符Python語言中邏輯運算符:在Python語言中,邏輯運算符可以對整數(shù)和浮點數(shù)進(jìn)行操作,并且,將0視為假,非0視為真。2.3.5賦值運算符Python語言中的“賦值”運算符:2.3.5賦值運算符在Python語言中,不支持“++”和“--”運算符,使用y+=1表示y累加1的操作,使用y-=1表示y自減1的操作。2.3.6高級運算符高級運算符:“id”本身不屬于運算符,是Python語言的內(nèi)置函數(shù),但是id函數(shù)用于返回其參數(shù)的內(nèi)存地址,沒有其他特別的意義,本書將id視為運算符。2.3.6高級運算符2.3.7Python運算符優(yōu)先級Python運算符的優(yōu)先級排序:2.3.7Python運算符優(yōu)先級Python運算符的優(yōu)先級排序:04列表2.4列表列表是Python語言中最重要的數(shù)據(jù)結(jié)構(gòu)。列表也是另一種計算機(jī)語言——Wolfram語言中最重要的數(shù)據(jù)結(jié)構(gòu)。在Python語言中,用方括號括起來的字面量和“標(biāo)簽”(變量)均為列表,列表中可以嵌套新的子列表,列表中的元素可為任意數(shù)據(jù)類型。2.4.1創(chuàng)建列表Python語言中,列表是由方括號括起來的以逗號為分隔符的一串?dāng)?shù)據(jù)組成,列表中的元素可以為任意類型。創(chuàng)建列表的常用方法有三種:(1)直接輸入列表元素:(2)使用list函數(shù)生成列表。(3)借助于append和extend函數(shù)生成列表。2.4.2列表元素訪問法列表中元素的索引號從左向右為從0開始且按步長1累加,從右向左為從-1開始按步長1減少。例如,列表t1=[10,11,12,13,14,15,16]則t1中各個元素的索引號從左向右依次為0、1、2、3、4、5、6;從右向左依次為-1、-2、-3、-4、-5、-6、-7。2.4.2列表元素訪問法列表元素除了借助于索引號單獨訪問外,還可以使用于索引號的范圍集體訪問,索引號的范圍表示方法為“首索引號:尾索引號:步長”,缺省首索引號為0,缺省尾索引號為最后一個元索的下一個位置(尾索引號不包含在有效索引范圍內(nèi)),缺省步長為1。對上面的t1,下面的集體訪問方式將返回列表形式:t1[3:4]#返回包含第3個元素的列表[13]t1[3:5]#返回包含第3、4個元素的列表[13,14]t1[::]、t1[:]和t1含義相同,均返回整個列表。2.4.3常用列表處理方法2.4.3常用列表處理方法2.4.3常用列表處理方法05字符串2.5字符串在各種計算機(jī)語言,字符串是主要的交互信息承載媒體,具有特殊重要的地位。在Python中,字符和字符串均以utf-8編碼形式存儲,utf-8編碼是一種可變長度編碼方式,以1至4個字節(jié)對數(shù)據(jù)進(jìn)行編程存儲,例如,utf-8規(guī)定,ASCII碼以1個字節(jié)存儲,漢字以3個字節(jié)存儲等。Python語言完全支持中文。2.5.1字符串表示在Python語言中,字符串字面值用單引號或雙引號引起來,下面以英文和中文字符為例,介紹字符串的表示方法:1if__name__=='__main__':2print('信息安全與智能系統(tǒng)')3print(type('信息安全與智能系統(tǒng)'))4print(len('信息安全與智能系統(tǒng)'))5print('Aredapple.')6print(len('Aredapple.'))7print('Aredapple.'*2)8str='蝴蝶落在appletree'9print(str)10print(len(str))執(zhí)行結(jié)果2.5.1字符串表示第2行“print('信息安全與智能系統(tǒng)')”輸出字符串字面值“信息安全與智能系統(tǒng)”;第3行“print(type('信息安全與智能系統(tǒng)'))”輸出這個中文字符串的類型,將得到“<class'str'>”,說明這是一個str類定義的對象類型。第4行“print(len('信息安全與智能系統(tǒng)'))”輸出這個中文字符串的長度,將得到9,即每個漢字視為一個符號。2.5.1字符串表示第5行“print('Aredapple.')”輸出英文字符串“Aredapple.”;第6行“print(len('Aredapple.'))”輸出這個英文字符串的長度,得到12,注意:空格也算符號。第7行“print('Aredapple.'*2)”輸出這個字符串兩次,字符串可視為“列表”,“*2”視為重復(fù)2次。2.5.1字符串表示第8行“str='蝴蝶落在appletree'”將包含有漢字和英文字符的字符串賦給str;第9行“print(str)”輸出這個字符串str;第10行“print(len(str))”輸出字符串str的長度,得到14,即每個漢字和每個英文字符均視為一個符號。2.5.2字符串常用方法2.5.2字符串常用方法5+合并字符串。例如:str1+str2得到一個新的字符串“Aredapple.39”6join合并字符串。例如:''.join([str1,str2,str3])將str1、str2和str3合并為一個字符串,得到“Aredapple.3939.66”。使用join連接字符串時,可以指定分隔符,例如:“'---'.join([str1,str2,str3])”得到“Aredapple.---39---39.66”7split分隔字符串,與join功能相反。分隔字符串后得到一個字符串列表。例如:str1.split()得到['A','red','apple.']。可以指定定符串的分隔符,例如:str1.splisep='red')得到['A','apple.']。8find查找字符串中的子串。例如:str1.find('red')得到2,即子串“red”(的首字符)在str1中出現(xiàn)的位置??梢灾付ㄋ阉鞯乃饕恢梅秶纾簊tr1.find('e',4,-1)得到10,這里的“4”表示搜索的起始索引位置,“-1”表示搜索的終索引位置(不含),索引號從0開始。如果查找不到,則返回-12.5.2字符串常用方法9rfind與find類似,從右邊查找子符串中的子串10index與find類似,但是查找不到時,拋出異常11rindex與index類似,但是從右邊查找12strip刪除字符串左右兩邊的空格或指定的字符。例如:str1.strip('.')得到“Aredapple”。13lstrip刪除字符串左邊的空格或指定的字符14rstrip刪除字符串右邊的空格或指定的字符15partition將字符串分隔為三個子串。例如:str1.partition('red')得到“('A','red','apple.')”(這是一個元組,在第4章介紹);如果partition的參數(shù)不是子符串的子串,則返回原始字符串和兩個空字符,例如:str1.partition('rede')得到“('Aredapple.','','')”2.5.2字符串常用方法16rpartition與partition類似,但是從右邊開始匹配函數(shù)的參數(shù)子符串17startswith詢問字符串是否以給定的子串開始,如果是,返回True;否則,返回False。例如,str1.startswith('A')返回True18endswith詢問字符串是否以給定的子串結(jié)尾,如果是,返回True;否則,返回False。例如,str1.endswith('ple.')返回True19isalpha詢問字符串是否僅包含字母(指A至Z和a至z的字母),如果是,則返回True;否則,返回False。例如,str1.isalpha()得到False20isalnum詢問字符串是否僅包含字母和數(shù)字(指0至9的數(shù)字),如果是,則返回True;否則,返回False。例如,str3.isalnum()得到False21isdecimal詢問字符串是否僅包含數(shù)字(指0至9的數(shù)字),如果是,則返回True;否則,返回False。例如,str2.isdecimal()得到True;str3.isdecimal()得到False2.5.2字符串常用方法22isdigit包含了isdecimal的功能,
還支持字節(jié)串類型數(shù)據(jù),例如,str2.isdigit()得到True;b'123'.isdigit()返回True23isnumeric一般地,可認(rèn)為等同于isdecimal,均不支持小數(shù)點24isspace詢問字符串(至少有一個字符)是否全由空白字符構(gòu)成,如果是,則返回True;否則,返回False25istitle詢問字符串中的每個單詞是否以大寫字母開頭(其余均為小寫),如果是,則返回True;否則,返回False。例如:'ARedApple'.istitle()返回True26title將字符串中的單詞的首字母大寫(其他字母小寫)。例如:'AREDaPPle'.title()得到ARedApple2.5.2字符串常用方法27count統(tǒng)計作為參數(shù)的子串在字符串中出現(xiàn)的次數(shù),例如:str1.count('e')得到2??梢灾付ㄋ阉鞯姆秶纾簊tr1.count('e',4,-1)統(tǒng)計字符串str1從第4個索引位置至倒數(shù)第2個索引位置中出現(xiàn)的字符“e”的次數(shù),這里的“4”為搜索的起始位置,“-1”為搜索的最終位置(不含),“-1”省略時將搜索至最后一個字符28replace替按字符串中的子串。例如:str1.replace('red','green')得到Agreenapple.29maketrans專為translate服務(wù)的替換規(guī)則,例如:tab=str1.maketrans('red','big'),該規(guī)則要求big規(guī)換red,且兩個子串的長度要相同。注意:是對應(yīng)位置字符替換。因此,可以實現(xiàn)子串的整體替換,也可是對應(yīng)位置的部分子串或字符替換30translate使用maketrans制定的規(guī)則完成替換,例如:str1.translate(tab)得到的str1為“Abigappli.”2.5.3格式化字符串將數(shù)值型數(shù)據(jù)等類型轉(zhuǎn)化為字符串時,需要對這些數(shù)據(jù)類型進(jìn)行格式調(diào)整,俗稱“格式化”,這樣得到的字符串,稱為“格式化字符串”。格式化字符串的最主要目的是用作輸出結(jié)果,不僅用于print函數(shù)中,而且也用于圖像用戶界面中。在Python語言中,常用的格式化字符串的方法有三種:(1)使用“f'{}'”形式格式化字符串(2)使用format方法格式化字符串(3)使用“%”方法格式化2.5.3格式化字符串(1)使用“f‘{}’”形式格式化字符串:序號典型用法實例1f'{val:m.nf},其中,“m.nf”表示顯示浮點數(shù)、顯示數(shù)據(jù)長度為m、保留n位小數(shù)。如果m小于實際數(shù)據(jù)長度,則m的值無效f'{3.14159:7.3f}得到“3.142”2f'{val:md},其中,“md”表示顯示整數(shù)、顯示數(shù)據(jù)長度為m。如果m小于實際數(shù)據(jù)長度,則m的值無效。這里val必須為整數(shù)f'{1000:7d}'得到“1000”2.5.3格式化字符串2.5.3格式化字符串format方法可視為“f'{}'”方法的完整版本,兩者的格式化控制符是通用的(2)使用format方法格式化字符串2.5.3格式化字符串1if__name__=='__main__':2a=33b=54print('{0}+{1}={2},{0}*{1}={3}'.format(a,b,a+b,a*b))5print('{x}+{y}={z},{x}*{y}={u}'.format(x=a,y=b,z=a+b,u=a*b))6print('{0:<8.2f},{0:^8.2f},{1:>8.2f}'.format(3.1415,2.7182))7print('{0}have{1[0]}{1[1]}.'.format('We',[3,'apples']))2.5.3格式化字符串程序結(jié)果圖:模塊zym0208執(zhí)行結(jié)果2.5.3格式化字符串(3)使用“%”方法格式化常用的“%”格式化方法2.5.3格式化字符串06本章小結(jié)
本章小結(jié)本章首先基于控制臺詳細(xì)介紹了Python語言的輸入和輸出函數(shù),然后,介紹了Python語言的基本數(shù)據(jù)類型,討論了Python語言的運算符及其優(yōu)先級,其中包括算術(shù)運算符、位運算符、關(guān)系運算符、邏輯運算符、賦值運算符和高級運算符。借助于id函數(shù)討論了Python語言中沒有常規(guī)意義下的“變量”的概念,并且“賦值”的說法也不準(zhǔn)確,本書中使用“標(biāo)簽”的概念,但仍沿用習(xí)慣使用了“賦值”給“標(biāo)簽”的說法。接著,重點討論了Python語言最重要的數(shù)據(jù)類型——列表,包括列表的創(chuàng)建、元素訪問和修改。最后,介紹了Python語言中字符串的表示方法,闡述了字符串對象相關(guān)的內(nèi)置函數(shù),討論了格式化字符串的方法。07習(xí)題
習(xí)題1.編寫Python程序,輸入一個正整數(shù),輸出它的十六進(jìn)制形式。2.編寫Python程序,從鍵盤輸出2個數(shù)值,輸出它們的乘積。3.編寫Python程序,計算兩個復(fù)數(shù)5+9j和11-3j的乘積。4.創(chuàng)建一個列表,包括1至100的整數(shù)序列,并求這些整數(shù)的和。5.創(chuàng)建一個列表,包括1至100的整數(shù)序列,顯示被3和5整數(shù)的數(shù)。6.創(chuàng)建兩個列表[7,9,10]和[13,11,4],合并這兩個列表為一個列表。7.創(chuàng)建一個列表[8,10,3,6,7,12,5,13,1,9],按升序排列該列表。8.創(chuàng)建二個二級嵌套列表[[8,10,11],[3,7,4]]和[[4,6],[2,5],[-3,-1]],計算這兩個矩陣的乘積。9.凱撒密碼將一個字符加密為其后的第3個字符,例如,A被加密為D,B被加密E,最后的三個字符X、Y和Z,用(循環(huán))后的三個字符A、B和C加密?,F(xiàn)在,有一個明文字符串為“Anappletree.”,試將其加密為密文(小數(shù)點不加密)。
第三章程序控制Contents順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)本章小結(jié)習(xí)題排序?qū)嵗?1順序結(jié)構(gòu)高級語言程序只有順序、分支和循環(huán)三種程序結(jié)構(gòu),這些結(jié)構(gòu)可以實現(xiàn)所有的計算機(jī)算法。作為一種高級語言,Python的程序控制具有極致精簡的特點,每行代碼為一條執(zhí)行語句,處于同一縮進(jìn)位置的所有語句按位置構(gòu)成順序結(jié)構(gòu);由if語句或match語句及其下一級縮進(jìn)的語句構(gòu)成分支結(jié)構(gòu);由while語句或for語言及其下一級縮進(jìn)的語句構(gòu)成循環(huán)結(jié)構(gòu)。本節(jié)將詳細(xì)介紹Python語言程序的控制結(jié)構(gòu)。3.1順序結(jié)構(gòu)順序結(jié)構(gòu)的程序的執(zhí)行按照其語句的位置先后順序執(zhí)行。順序結(jié)構(gòu)是計算機(jī)程序的總體執(zhí)行結(jié)構(gòu),只有在程序的部分功能模塊中才可以采取分支結(jié)構(gòu)或循環(huán)結(jié)構(gòu)。3.1順序結(jié)構(gòu)1importmath2x1=input('PleaseinputxofPointA:')3y1=input('PleaseinputyofPointA:')4x2=input('PleaseinputxofPointB:')5y2=input('PleaseinputyofPointB:')6x1=float(x1)7y1=float(y1)3.1順序結(jié)構(gòu)8x2=float(x2)9y2=float(y2)10d=math.sqrt((x2-x1)**2+(y2-y1)**2)11print(f'DistanceofA({x1},{y1})andB({x2},{y2})is:4ig6i4k.')第1行裝載math模塊,第10行使用了math模塊中的sqrt函數(shù)。第2行調(diào)用input函數(shù)讀取鍵盤的輸入字符串,作為點A的x坐標(biāo),第6行“x1=float(x1)”將x1轉(zhuǎn)化為浮點數(shù),仍使用標(biāo)簽x1。3.1順序結(jié)構(gòu)第3行讀取鍵盤的輸入字符串,作為點A的y坐標(biāo)。第7行將y1轉(zhuǎn)化為浮點數(shù),仍使用標(biāo)簽y1。第4行讀取鍵盤的輸入字符串,作為點B的x坐標(biāo)第8行將x2轉(zhuǎn)化為浮點數(shù),仍使用標(biāo)簽x2。第5行讀取鍵盤的輸入字符串,作為點B的y坐標(biāo)。第9行將y2轉(zhuǎn)化為浮點數(shù),仍使用標(biāo)簽y2。3.1順序結(jié)構(gòu)第10行調(diào)用math模塊的sqrt函數(shù)計算兩點間的距離。第11行輸出兩個點A和B以及它們的歐氏距離d。模塊zym0301執(zhí)行結(jié)果02分支結(jié)構(gòu)3.2分支結(jié)構(gòu)程序的分支結(jié)構(gòu)用于實現(xiàn)有條件的選擇特定語句執(zhí)行。Python語言中使用縮進(jìn)表示同一分支結(jié)構(gòu)中的語句。例如:if條件表達(dá)式:
語句1
語句2else:
語句3
語句43.2分支結(jié)構(gòu)Python語言中,縮進(jìn)也用于表示循環(huán)結(jié)構(gòu)中的歸屬關(guān)系。對縮進(jìn)格式而言,一條語句(一般為控制語句)下的具有相同縮進(jìn)量的所有語句均屬于該語句的控制部分。只是為了程序代碼美觀,每級縮進(jìn)均使用相同的縮進(jìn)量。分支結(jié)構(gòu)也稱選擇結(jié)構(gòu),Python語言中,使用if或match關(guān)鍵字實現(xiàn)分支控制。3.2.1if語句if語句具有四種常用結(jié)構(gòu),如下所示:(1)單個if結(jié)構(gòu)if條件表達(dá)式:
語句1
……
語句n上述結(jié)構(gòu)為單個if結(jié)構(gòu),即當(dāng)“條件表達(dá)式”為真時,執(zhí)行“語句1”至“語句n”。3.2.1if語句(2)標(biāo)準(zhǔn)if-else結(jié)構(gòu)if條件表達(dá)式:
語句1
……
語句melse:
語句m+1
……
語句n3.2.1if語句第二種結(jié)構(gòu)為標(biāo)準(zhǔn)的if-else結(jié)構(gòu),即當(dāng)“條件表達(dá)式”為真時,執(zhí)行“語句1”至“語句m”;否則,執(zhí)行“語句m+1”至“語句n”。如果if部分沒有語句,用“pass”語句表示。3.2.1if語句(3)if-elif-else結(jié)構(gòu)if條件表達(dá)式1:
語句1
……
語句kelif條件表達(dá)式2:
語句k+1
……
語句m3.2.1if語句elif條件表達(dá)式3:
語句m+1
……
語句p……#其他的elif語句else:
語句t
……
語句n3.2.1if語句第三種結(jié)構(gòu)是典型的多分支結(jié)構(gòu),即如果“條件表達(dá)式1”為真時,執(zhí)行“語句1”至“語句k”;否則,如果“條件表達(dá)式2”為真時,執(zhí)行“語句k+1”至“語句m”;否則,如果“條件表達(dá)式3”為真時,執(zhí)行“語句m+1”至“語句p”;否則,當(dāng)上述所有“條件表達(dá)式”均為假時,執(zhí)行“else”部分的“語句t”至“語句n”。3.2.1if語句(4)if語句的嵌套結(jié)構(gòu)if結(jié)構(gòu)中的if部分、else部分和elif部分中均可再嵌入if結(jié)構(gòu),此時,注意各個部分的縮進(jìn)關(guān)系,以保證if部分與其相應(yīng)的elif或else部分相一致,不至于出現(xiàn)“張冠李戴”的問題。3.2.1if語句例:輸入一數(shù)值x,計算分段函數(shù)f(x)的值:3.2.1if語句1x=input('Pleaseinputanumber:')2x=float(x)3y=04ifx>1:5y=x+16elif0<x<=1:7y=3*x-13.2.1if語句8elif-1<x<=0:9y=-x**2-110else:11y=2*x**312print(f'{x}produces{y:.2f}')3.2.1if語句第1~12行為一個功能模塊,求解上述的“問題”。第1行“x=input(‘Pleaseinputanumber:’)”從鍵盤輸入一個表達(dá)數(shù)值的字符串給x。第2行“x=float(x)”將x轉(zhuǎn)化為浮點數(shù),仍用x作為標(biāo)簽。第3行“y=0”將0賦給y。第4~11行為一個多分支結(jié)構(gòu),對應(yīng)于式(1)的四種情況,注意在Python語言中,支持這種“0<x<=1”級聯(lián)的關(guān)系不等式。第4行“ifx>1:”如果x大于1,則執(zhí)行第43行“y=x+1”將x與1的和賦給y;3.2.1if語句如果第6行“elif0<x<=1:”中x大于0且小于等于1,則執(zhí)行第7行“y=3*x-1”,將3x-1的值賦給y;否則,若第8行“elif-1<x<=0:”中x大于-1且小于等于0,則執(zhí)行第9行“y=-x**2-1”將-x2-1賦給y;在上述情況都不成立時,執(zhí)行第11行“y=2*x**3”將2x3賦給y。第12行“print(f'{x}produces{y:.2f}')”在屏幕上打印x和y的值。3.2.1if語句if結(jié)構(gòu)可以寫成一條語句,形如:y=表達(dá)式1if條件else表達(dá)式2表示當(dāng)“條件”為真時,將“表達(dá)多1”的值賦給y,否則將“表達(dá)式2”的值賦給y。“表達(dá)式2”還可以嵌入新的if結(jié)構(gòu)。3.2.2match語句match多分支控制語句是Python3.10新添加的控制語句,其基本語法形式為:match表達(dá)式:case表達(dá)式1:
語句1
……
語句k3.2.2match語句case表達(dá)式2:
語句k+1
……
語句p
……#其他的case情況case_:
語句m
……
語句n3.2.2match語句上述match分支的功能非常強大,表現(xiàn)在這里的“表達(dá)式”可以為字符串、數(shù)值、邏輯值、列表、元組和字典等,每個case部分可以添加條件限制,用“if表達(dá)式”表示。當(dāng)match后面的“表達(dá)式”與某個case后面的表達(dá)式匹配后,則執(zhí)行該case部分的語句。3.2.2match語句例:當(dāng)輸入x為0或1或2時,輸出“低分”;當(dāng)輸入3或4,輸出“中分”;當(dāng)輸入5時,輸出“高分”;當(dāng)輸入小于0或大于5的數(shù)時,提示輸入有誤1if__name__=='__main__':2x=int(input('Inputanumber:'))3matchx:4case0|1|2:5print('Lowmark.')6case3|4:7print('Mediummark.')3.2.2match語句8case5:9print('Highmark.')10case_ifx>5:11print('Inputistoobig.')12case_ifx<0:13print('Inputistoosmall.')3.2.2match語句第2行“x=int(input('Inputanumber:'))”從鍵盤讀取一個整數(shù),賦給x。第3~13行為match結(jié)構(gòu),第3行“matchx:”為match結(jié)構(gòu)的頭部,x為match結(jié)構(gòu)的表達(dá)式;第4行“case0|1|2:”表示當(dāng)x的值為0或1或2時,執(zhí)行第5行語句“print('Lowmark.')”,即輸出“Lowmark.”。這里的“|”表示“或”。第6行“case3|4:”表示x的值為3或4時,執(zhí)行第7行“print('Mediummark.')”,輸出“Mediummark.”。3.2.2match語句第8行“case5:”表示x的值為5時,將執(zhí)行第9行輸出“Highmark.”。第10行“case_ifx>5:”表示當(dāng)x的值不滿足前面的各種case情況時,且滿足限定條件x大于5時,將執(zhí)行第11行“print('Inputistoobig.')”,輸出“Inputistoobig.”。第12行“case_ifx<0:”表示當(dāng)x的值不滿足前面的各種case情況且滿足限定條件x小于0時,將執(zhí)行第13行“print('Inputistoosmall.')”,輸出“Inputistoosmall.”。3.2.2match語句Match語句例子執(zhí)行結(jié)果:模塊zym0304執(zhí)行結(jié)果03循環(huán)結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)Python語言中,只有兩個循環(huán)控制方式,即while結(jié)構(gòu)和for結(jié)構(gòu)。while結(jié)構(gòu)有時稱為“當(dāng)型”循環(huán),即當(dāng)while后的表達(dá)式為真時,執(zhí)行while結(jié)構(gòu)中的語句;如果while后的表達(dá)式為假,則跳過while結(jié)構(gòu)執(zhí)行其后的語句。3.3.1while結(jié)構(gòu)Python語言中,只有兩個循環(huán)控制方式,即while結(jié)構(gòu)和for結(jié)構(gòu)。while結(jié)構(gòu)有時稱為“當(dāng)型”循環(huán),即當(dāng)while后的表達(dá)式為真時,執(zhí)行while結(jié)構(gòu)中的語句;如果while后的表達(dá)式為假,則跳過while結(jié)構(gòu)執(zhí)行其后的語句。while結(jié)構(gòu)有兩種基本形式,即標(biāo)準(zhǔn)的while循環(huán)結(jié)構(gòu)和while-else結(jié)構(gòu)3.3.1while結(jié)構(gòu)(1)while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)的語法為:while條件表達(dá)式:
語句1
……
語句n在while循環(huán)結(jié)構(gòu)中,每次循環(huán)均需判斷“條件表達(dá)式”的值,如果為真,則執(zhí)行“語句1”至“語句n”。如果“條件表達(dá)式”的值為假,則跳出循環(huán)。3.3.1while結(jié)構(gòu)1if__name__=='__main__':2sum=03i=04whilei<=100:5sum+=i6i+=17print(f'1+2+...+100={sum}')3.3.1while結(jié)構(gòu)第2行“sum=0”將0賦給sum。第3行“i=0”將0賦給i。第4~6行為while循環(huán)結(jié)構(gòu),當(dāng)?shù)?行“whilei<=100:”的條件表達(dá)式“i<=100”為真時,循環(huán)執(zhí)行第5、6行。第5行“sum+=i”將i累加到sum中;第6行“i+=1”表示循環(huán)變量i累加1。3.3.1while結(jié)構(gòu)(2)while-else結(jié)構(gòu)while-else結(jié)構(gòu)的語法為:while條件表達(dá)式:
語句1
……
語句melse:
語句m+1
……
語句n3.3.1while結(jié)構(gòu)上述結(jié)構(gòu)表示如果while后面的“條件表達(dá)式”為真,則循環(huán)執(zhí)行“語句1”至“語句m”;如果“條件表達(dá)式”為假,則執(zhí)行“else:”后的“語句m+1”至“語句n”。表面上看,“else:”部分是多余的,好像總被執(zhí)行到。通常的while結(jié)構(gòu),當(dāng)其后的“條件表達(dá)式”為假時,將跳出while結(jié)構(gòu),執(zhí)行其后的語句,所以有沒有“else:”,“語句m+1”至“語句n”總被執(zhí)行到。但是有一個例外,這個例外和break語句有關(guān)。3.3.1while結(jié)構(gòu)break語句可以用于while結(jié)構(gòu)(和for結(jié)構(gòu))中,用于跳出while結(jié)構(gòu)(和for結(jié)構(gòu))。對于while-else結(jié)構(gòu)而言,break語句將跳出整個while-else結(jié)構(gòu),因此,如果在while部分執(zhí)行時遇到了break語句,將跳出整個while-else結(jié)構(gòu),即else部分的語句將不被執(zhí)行。3.3.1while結(jié)構(gòu)1if__name
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業(yè)招標(biāo)承包經(jīng)營合同范例
- 2025年藥效學(xué)研究服務(wù)項目提案報告模式
- 2025冷凍倉儲合同模板
- 揭牌儀式講話稿15篇
- 高效農(nóng)業(yè)機(jī)械的維護(hù)與保養(yǎng)實踐
- 營養(yǎng)知識普及學(xué)生健康飲食教育的基石
- 教育醫(yī)療融合視角下的家庭教育指導(dǎo)研究
- 2025年河南貨運叢業(yè)資格證考試題及答案
- 結(jié)合綠色生態(tài)理念的校園健身區(qū)域建設(shè)探討
- 構(gòu)建互動性強的學(xué)校多媒體教室設(shè)施規(guī)劃方案
- 環(huán)保行業(yè)研究報告
- 物流服務(wù)項目的投標(biāo)書
- 廣西太陽能資源分析
- 地鐵車站低壓配電及照明系統(tǒng)
- CDE網(wǎng)站申請人之窗欄目介紹及用戶操作手冊
- 行業(yè)會計比較(第三版)PPT完整全套教學(xué)課件
- 值機(jī)業(yè)務(wù)與行李運輸實務(wù)(第3版)高職PPT完整全套教學(xué)課件
- 高考英語語法填空專項訓(xùn)練(含解析)
- 42式太極劍劍譜及動作說明(吳阿敏)
- 部編版語文小學(xué)五年級下冊第一單元集體備課(教材解讀)
- 仁愛英語九年級下冊單詞表(中英文)
評論
0/150
提交評論