Python程序設(shè)計(jì)基礎(chǔ) 課件全套 張勇 第1-10章 Python語(yǔ)言入門(mén)-網(wǎng)絡(luò)爬蟲(chóng)_第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 張勇 第1-10章 Python語(yǔ)言入門(mén)-網(wǎng)絡(luò)爬蟲(chóng)_第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 張勇 第1-10章 Python語(yǔ)言入門(mén)-網(wǎng)絡(luò)爬蟲(chóng)_第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 張勇 第1-10章 Python語(yǔ)言入門(mén)-網(wǎng)絡(luò)爬蟲(chóng)_第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 張勇 第1-10章 Python語(yǔ)言入門(mén)-網(wǎng)絡(luò)爬蟲(chóng)_第5頁(yè)
已閱讀5頁(yè),還剩587頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章Python語(yǔ)言入門(mén)ContentsPython語(yǔ)言Python語(yǔ)言開(kāi)發(fā)環(huán)境Python語(yǔ)言程序結(jié)構(gòu)本章小結(jié)習(xí)題01Python語(yǔ)言Python語(yǔ)言是目前最簡(jiǎn)潔高效的計(jì)算機(jī)語(yǔ)言,可基于各類(lèi)操作系統(tǒng)編寫(xiě)應(yīng)用軟件,適合于各個(gè)應(yīng)用領(lǐng)域和年齡段的程序設(shè)計(jì)人員。本章將介紹Python語(yǔ)言的安裝與開(kāi)發(fā)環(huán)境,并詳細(xì)介紹Python程序的框架結(jié)構(gòu),供讀者快速入門(mén)。1.1Python語(yǔ)言計(jì)算機(jī)可以直接完成的運(yùn)算稱(chēng)為機(jī)器指令,機(jī)器指令由操作碼和操作數(shù)組成,操作碼和操作數(shù)均為二進(jìn)制數(shù),操作碼指示CPU對(duì)操作數(shù)施加所需要的運(yùn)算操作。計(jì)算機(jī)只能運(yùn)行由機(jī)器指令組成的程序,也稱(chēng)為機(jī)器語(yǔ)言程序。早期的計(jì)算機(jī)科學(xué)家,正是使用機(jī)器語(yǔ)言進(jìn)行程序設(shè)計(jì)。1.1Python語(yǔ)言計(jì)算機(jī)語(yǔ)言發(fā)展史上具有變革性意義的事件是C語(yǔ)言的誕生。C語(yǔ)言是一種接近于自然語(yǔ)言且具有地址訪問(wèn)能力的計(jì)算機(jī)語(yǔ)言,C語(yǔ)言對(duì)計(jì)算機(jī)的發(fā)展具有其他語(yǔ)言無(wú)法比擬的貢獻(xiàn),例如,C語(yǔ)言可以開(kāi)發(fā)各類(lèi)操作系統(tǒng)軟件,使計(jì)算機(jī)的軟件變得易用且界面友好;C語(yǔ)言使計(jì)算機(jī)硬件感覺(jué)到前所未有的危機(jī),計(jì)算機(jī)硬件一直成為計(jì)算機(jī)發(fā)展的瓶頸;C語(yǔ)言使計(jì)算機(jī)編程大眾化,快速催生了內(nèi)容豐富和形式多樣的海量應(yīng)用軟件。1.1Python語(yǔ)言眾多計(jì)算機(jī)語(yǔ)言的涌現(xiàn),使得計(jì)算機(jī)使用者開(kāi)始考慮學(xué)習(xí)和掌握哪種計(jì)算機(jī)語(yǔ)言?可能考慮的因素有:(1)該計(jì)算機(jī)語(yǔ)言是否簡(jiǎn)單易學(xué),語(yǔ)法是否簡(jiǎn)潔優(yōu)美;(2)該機(jī)算機(jī)語(yǔ)言是否功能強(qiáng)大,可以滿足所學(xué)專(zhuān)業(yè)和所從事工作的需要;(3)該計(jì)算機(jī)語(yǔ)言是否具有巨大的用戶(hù)群和強(qiáng)大的生態(tài)圈,以促進(jìn)資源分享、學(xué)習(xí)和交流;(4)該計(jì)算機(jī)語(yǔ)言是否具有優(yōu)秀的可移值性,可應(yīng)用于各類(lèi)計(jì)算機(jī)平臺(tái)上;(5)該計(jì)算機(jī)語(yǔ)言是否具有強(qiáng)大的生命力,可持續(xù)發(fā)展等。Python語(yǔ)言具備上述全部的肯定回答。1.1Python語(yǔ)言登錄Python官網(wǎng)(/),下載Python語(yǔ)言最新版本。若是64位的Windows系統(tǒng)計(jì)算機(jī),需要下載安裝程序“python-3.10.4-amd64.exe”。按照安裝說(shuō)明安裝好Python語(yǔ)言后,在Windows“開(kāi)始”菜單中將出現(xiàn)菜單“Python3.10”,其下具有三個(gè)子菜單項(xiàng)“IDLE”、“Python3.1064-bit”和“Python3.10ModuleDocs(64-bit)”,依次啟動(dòng)Python語(yǔ)言程序殼、Python語(yǔ)言?xún)?nèi)核和Python程序包。1.1Python語(yǔ)言啟動(dòng)“命令提示符”窗口,輸入“python”,如果得到如下所示信息,說(shuō)明Python軟件安裝成功。顯示Python軟件版本信息1.1Python語(yǔ)言Python作為一種計(jì)算機(jī)語(yǔ)言,可像C語(yǔ)言等一樣編寫(xiě)計(jì)算機(jī)程序。單擊菜單“File|NewFile(Ctrl+N)”彈出下圖所示界面。IDLE編輯Python程序界面1.1Python語(yǔ)言運(yùn)行Python程序方式單擊菜單“Run|RunModuleF5”,將在IDLE中顯示執(zhí)行結(jié)果。打開(kāi)“命名提示符”窗口,工作目錄設(shè)為“E:\ZYPythonPrj\ZYPrj01”,輸入“pythonmain.py”,將得到運(yùn)行結(jié)果。1.1Python語(yǔ)言左表明Python語(yǔ)言程序的執(zhí)行離不開(kāi)Python內(nèi)核,其執(zhí)行方式可視為“翻譯”執(zhí)行方式。Windows系統(tǒng)用戶(hù)可能更希望Python語(yǔ)言程序可以編譯鏈接為一個(gè)可執(zhí)行文件。Python語(yǔ)言程序的這種“翻譯”執(zhí)行方式不是它的缺點(diǎn)。這樣做的目的,是為了增強(qiáng)程序的可移植性。只要計(jì)算機(jī)系統(tǒng)中安裝了Python語(yǔ)言,所有的Python程序均可以移植該計(jì)算機(jī)系統(tǒng)上執(zhí)行。“命令提示符”窗口下運(yùn)行Python程序1.1Python語(yǔ)言程序員很少使用IDLE編輯器編寫(xiě)Python程序,這是因?yàn)閂isualStudio和PyCharm等提供了更先進(jìn)易用的編輯、翻譯、測(cè)試和運(yùn)行集成開(kāi)發(fā)環(huán)境。下節(jié)將介紹這兩個(gè)優(yōu)秀的集成開(kāi)發(fā)環(huán)境。02Python語(yǔ)言開(kāi)發(fā)環(huán)境1.2Python語(yǔ)言開(kāi)發(fā)環(huán)境任意編輯軟件均可用于編寫(xiě)Python語(yǔ)言程序,那些集成了Python語(yǔ)言語(yǔ)法智能感知技術(shù)且能實(shí)現(xiàn)Python語(yǔ)言程序的調(diào)試與執(zhí)行的集成開(kāi)發(fā)環(huán)境,才是首選的Python語(yǔ)言程序開(kāi)發(fā)環(huán)境。推薦兩個(gè)最有名的Python語(yǔ)言程序集成開(kāi)發(fā)環(huán)境,即VisualStudio和PyCharm。這兩個(gè)集成開(kāi)發(fā)環(huán)境,均具有Python語(yǔ)言語(yǔ)法智能感知技術(shù),即輸入Python語(yǔ)言函數(shù)后,將自動(dòng)提示參數(shù)個(gè)數(shù)與用法等信息,并可自動(dòng)調(diào)整程序代碼的格式。

1.2.1VisualStudio集成開(kāi)發(fā)環(huán)境

登錄到網(wǎng)站:/zh-hans/下載VisualStudio集成開(kāi)發(fā)環(huán)境的在線安裝器VisualStudioInstaller。啟動(dòng)在線安裝器VisualStudioInstaller后,選中“Python開(kāi)發(fā)”組件,同時(shí)建議選中“.NET桌面開(kāi)發(fā)”、“使用C++的桌面開(kāi)發(fā)”和“通用Windows平臺(tái)開(kāi)發(fā)”,后三者使VisualStudio可以編寫(xiě)C++/C#應(yīng)用程序。

1.2.1VisualStudio集成開(kāi)發(fā)環(huán)境按照安裝提示完成VisualStudio2022的安裝后,啟動(dòng)VisualStudio開(kāi)發(fā)環(huán)境,在啟動(dòng)界面選擇“創(chuàng)建新項(xiàng)目”。VisualStudio安裝

1.2.1VisualStudio集成開(kāi)發(fā)環(huán)境輸入如圖所示的代碼,按下快捷鍵“Shift+Alt+F5”將啟動(dòng)Python“交互式窗口”,如圖中的左下方窗口,顯示程序“ZYPrj02.py”的執(zhí)行結(jié)果;或者,按下快捷鍵“Ctrl+F5”,啟動(dòng)“命令提示符”窗口,并在其中顯示程序運(yùn)行結(jié)果。VisualStudio開(kāi)發(fā)Python應(yīng)用程序界面

1.2.1VisualStudio集成開(kāi)發(fā)環(huán)境輸入如圖所示的代碼,按下快捷鍵“Shift+Alt+F5”將啟動(dòng)Python“交互式窗口”,如圖中的左下方窗口,顯示程序“ZYPrj02.py”的執(zhí)行結(jié)果;或者,按下快捷鍵“Ctrl+F5”,啟動(dòng)“命令提示符”窗口,并在其中顯示程序運(yùn)行結(jié)果。VisualStudio開(kāi)發(fā)Python應(yīng)用程序界面

1.2.1VisualStudio集成開(kāi)發(fā)環(huán)境import語(yǔ)句不是必須的,但是一般的Python程序都需要裝載大量的模塊。Python語(yǔ)言具有大量?jī)?nèi)置程序包,如前面圖中math等,也有大量的擴(kuò)展包,如numpy等。擴(kuò)展包需要單獨(dú)安裝。安裝numpy程序包

1.2.2PyCharm集成開(kāi)發(fā)環(huán)境登錄到網(wǎng)站“/pycharm/”,下載PyCharm軟件,其Community最新版本為2022.1。按照安裝說(shuō)明安裝好PyCharm軟件后,啟動(dòng)PyCharm軟件,在歡迎界面中選擇“新建項(xiàng)目”。PyCharm新建項(xiàng)目窗口

在“位置”處輸入“E:\ZYPythonPrj\ZYPrj03”,選中“創(chuàng)建main.py”歡迎腳本,然后,單擊“創(chuàng)建”得到右圖所示。單擊菜單“文件|設(shè)置”,在其彈出的窗口中,找到“插件”,并安裝“Chinese(Simplified)LanguagePack/中文語(yǔ)言包”。項(xiàng)目ZYPrj03工作窗口

1.2.2PyCharm集成開(kāi)發(fā)環(huán)境單擊上一頁(yè)圖中菜單“文件|設(shè)置”,在其彈出的窗口中,找到“Python解釋器”。單擊“+”號(hào),在彈出的窗口,搜索并安裝所需要的擴(kuò)展包,這里至少應(yīng)安裝numpy、pandas和matplotlib,這三個(gè)包依次為數(shù)學(xué)運(yùn)算、數(shù)據(jù)分析和繪圖服務(wù)的專(zhuān)用軟件包。安裝擴(kuò)展包窗口

1.2.2PyCharm集成開(kāi)發(fā)環(huán)境

1.2.2PyCharm集成開(kāi)發(fā)環(huán)境項(xiàng)目ZYPrj03自動(dòng)創(chuàng)建了一個(gè)程序文件main.py,在文件main.py中,以“#”開(kāi)頭的行為注釋?zhuān)遣豢蓤?zhí)行的指令。因此,main.py中的可執(zhí)行語(yǔ)句如下程序段所示。1defprint_hi(name):2print(f'Hi,{name}')34if__name__=='__main__':5print_hi('PyCharm')

1.2.2PyCharm集成開(kāi)發(fā)環(huán)境Python語(yǔ)言程序按照縮進(jìn)關(guān)系確定語(yǔ)句組。在程序段中,第1~2行為一組,第4~5行為一組。這里第1行的語(yǔ)句“defprint_hi(name):”表示定義函數(shù)print_hi,其具有一個(gè)形式參數(shù)name;其下縮進(jìn)的所有語(yǔ)句將均屬于該函數(shù),直到遇到與語(yǔ)句“defprint_hi(name):”處于相同縮進(jìn)位置的語(yǔ)句為止,即遇到第4行的語(yǔ)句“if__name__=='__main__':”為止,后者不屬于前者。第2行的語(yǔ)句“print(f'Hi,{name}')”使用格式輸出方式輸出“Hi,”和name參數(shù)的值。

1.2.2PyCharm集成開(kāi)發(fā)環(huán)境第4~5行為一組。第4行的“__name__”為一個(gè)Python語(yǔ)言的全局標(biāo)號(hào)(或稱(chēng)全局變量),在其所在的模塊(即文件)中,其值固定為“__main__”,注意:這里的main與文件名“main.py”中的main毫無(wú)關(guān)系。因此,當(dāng)執(zhí)行main.py文件時(shí),第4行的if語(yǔ)句為真,第5行的語(yǔ)句“print_hi('PyCharm')”將被執(zhí)行,其調(diào)用自定義的print_hi函數(shù)輸出“Hi,PyCharm”。03Python語(yǔ)言程序結(jié)構(gòu)1.3Python語(yǔ)言程序結(jié)構(gòu)單擊菜單“文件|新建Alt+Insert|Python文件”,然后,輸入文件名“zym0101”,回車(chē)后進(jìn)入如圖所示窗口。輸入zym0101.py文件的代碼。安裝擴(kuò)展包窗口程序文件zym0101.py上程序段中,第1~2行定義了函數(shù)zymax,具有兩個(gè)參數(shù)x和y,返回兩者的較大者;第4行的語(yǔ)句“print(__name__)”輸出全局符號(hào)“__name__”;第5~7行為一個(gè)if語(yǔ)句組,因第5行的條件為真,故第6~7行的語(yǔ)句被執(zhí)行:第6行的語(yǔ)句“print('max=',zymax(3,5))”調(diào)用庫(kù)函數(shù)print和自定義函數(shù)zymax,輸出“max=5”;第7行輸出全局符號(hào)“__name__”。文件zym0101.py的執(zhí)行結(jié)果下部分窗口所示。第4行和第7行輸出的“__name__”均為“__main__”。1.3Python語(yǔ)言程序結(jié)構(gòu)一般地Python語(yǔ)言程序的結(jié)構(gòu)滿足以下規(guī)則:(1)借助于import裝載程序模塊。import語(yǔ)句可位于程序中任意位置,一般將import語(yǔ)句放在程序開(kāi)頭。如果不需要裝載其他程序模塊,則不需要import語(yǔ)句;(2)將可執(zhí)行的語(yǔ)句放在if語(yǔ)句組中,if語(yǔ)句組的頭部(即條件判斷部分)的語(yǔ)句固定為“if__name__=='__main__':”。這樣,if語(yǔ)句組中的全部語(yǔ)句只有當(dāng)其所在的文件被執(zhí)行時(shí),才被執(zhí)行到??梢栽谶@個(gè)if語(yǔ)句組中放置測(cè)試代碼,用于測(cè)試該程序文件中的類(lèi)和函數(shù)的正確性。一般地,將這個(gè)if語(yǔ)句組放置在程序文件的末尾。這部分稱(chēng)為文件(或模塊)的可直接執(zhí)行部分。1.3Python語(yǔ)言程序結(jié)構(gòu)(3)程序文件中可以包含任意多的類(lèi)和函數(shù),建議將這些類(lèi)和函數(shù)放置于import語(yǔ)句的后面,但位于“if__name__=='__main__':”語(yǔ)句組的前面。1.3Python語(yǔ)言程序結(jié)構(gòu)按照上述規(guī)則,向項(xiàng)目ZYPrj03中添加一個(gè)新的Python文件zym0103.py,程序段如下:程序段分為三部分第一部分為第1~4行,為import部分,裝載程序中用到的模塊這里裝載了Python語(yǔ)言?xún)?nèi)置模塊math、os、time和random,分別為數(shù)學(xué)、操作系統(tǒng)、時(shí)間和隨機(jī)數(shù)發(fā)生器模塊。第二部分為第6~22行,為類(lèi)定義和函數(shù)定義部分。第三部分為第24~44行,為當(dāng)前文件的測(cè)試程序,用于測(cè)試本文件中的類(lèi)和函數(shù)的正確性。這部分內(nèi)容稱(chēng)為可直接執(zhí)行部分,但當(dāng)該模塊被其他模塊調(diào)用時(shí),這部分內(nèi)容對(duì)于其他模塊不可見(jiàn)。1.3Python語(yǔ)言程序結(jié)構(gòu)右圖是典型的Python語(yǔ)言程序結(jié)構(gòu)。簡(jiǎn)單介紹第三部分內(nèi)容,即第24~44行的語(yǔ)句的含義。1.3Python語(yǔ)言程序結(jié)構(gòu)文件zym0103.py及其運(yùn)行結(jié)果第25行、第41~44行組成一個(gè)功能單元,用于測(cè)試程序的運(yùn)行時(shí)間。第25行的語(yǔ)句“time1=time.time()”調(diào)用time模塊的函數(shù)time記錄系統(tǒng)當(dāng)前的時(shí)間,形象地稱(chēng)為時(shí)間戳;第41行的語(yǔ)句“time.sleep(0.2)”調(diào)用time模塊的函數(shù)sleep延時(shí)等待0.2秒;第42行的語(yǔ)句“time2=time.time()”再次將當(dāng)前的時(shí)間戳賦給time2;第43行的語(yǔ)句“dtime=time2-time1”得到兩個(gè)時(shí)間戳的差,單位為秒;第44行輸出dtime,即為第25~42行間的代碼的運(yùn)行時(shí)間,如圖下方窗口中的“timeelapsed:0.2151966094970703s”所示。第27~32行的代碼用到了自定義的類(lèi)Complex,表示復(fù)數(shù)類(lèi)。1.3Python語(yǔ)言程序結(jié)構(gòu)第34行的語(yǔ)句“print(os.getcwd())”輸出當(dāng)前工程所在的目錄。第36行的語(yǔ)句“random.seed(299792458)”調(diào)用模塊random的seed函數(shù)設(shè)置偽隨機(jī)數(shù)發(fā)生器的“種子”為“299792458”,第37行的語(yǔ)句“print(random.randint(1,10))”將以該種子為初值迭代值,生成一個(gè)1至10的偽隨機(jī)數(shù)。設(shè)置“種子”的好處在于,后續(xù)的偽隨機(jī)數(shù)發(fā)生器將生成固定的偽隨機(jī)序列,這里是6,如圖下方所示;否則,沒(méi)有第36行,每次執(zhí)行第37行都將得到一個(gè)不同的偽隨機(jī)數(shù)。建議在第37行后再調(diào)用一次“random.seed()”恢復(fù)默認(rèn)的偽隨機(jī)數(shù)發(fā)生器。1.3Python語(yǔ)言程序結(jié)構(gòu)第39行的語(yǔ)句“print(math.sin(math.pi/4))”調(diào)用math模塊的sin函數(shù)計(jì)算/4的正弦值。這里的math.pi為圓周率。

第24~44行為一個(gè)if語(yǔ)句組。第25~44行的語(yǔ)句均處于同一等級(jí)的縮進(jìn)層次,這些語(yǔ)句均為if語(yǔ)句的語(yǔ)句體,當(dāng)?shù)?4行的條件為真時(shí),這些語(yǔ)句將順序執(zhí)行;若第24行的if條件為假,這些語(yǔ)句不被執(zhí)行。1.3Python語(yǔ)言程序結(jié)構(gòu)04本章小結(jié)本章重點(diǎn)介紹Python語(yǔ)言的特色和Python語(yǔ)言程序的集成開(kāi)發(fā)環(huán)境,Python語(yǔ)言程序設(shè)計(jì)秉承著極致精簡(jiǎn)的原則,借助于Python“翻譯”器執(zhí)行,具有極強(qiáng)的跨平臺(tái)移植能力。Python語(yǔ)言程序依靠其代碼間的位置縮進(jìn)關(guān)系確定代碼間的依賴(lài)關(guān)系,一般地,可將Python程序分成三部分,即import部分、類(lèi)與函數(shù)定義部分和模塊內(nèi)部可執(zhí)行部分。1.4本章小結(jié)05習(xí)題

習(xí)題

第二章Python編程基礎(chǔ)ContentsPython語(yǔ)言輸入與輸出Python基本數(shù)據(jù)類(lèi)型Python運(yùn)算符列表字符串本章小結(jié)習(xí)題01Python語(yǔ)言輸入與輸出任意計(jì)算機(jī)程序都應(yīng)有零個(gè)或多個(gè)輸入,且至少應(yīng)有一個(gè)輸出。一般地,計(jì)算機(jī)程序按照指令位置的先后順序執(zhí)行;當(dāng)遇到分支指令和循環(huán)指令時(shí),程序?qū)⒂袟l件的跳轉(zhuǎn)到相應(yīng)指令處執(zhí)行。本章將介紹按順序執(zhí)行的簡(jiǎn)單Python語(yǔ)言程序,并借助于這類(lèi)程序討論P(yáng)ython語(yǔ)言的數(shù)據(jù)表示方法和基本運(yùn)算符,然后詳細(xì)討論最常用的數(shù)據(jù)結(jié)構(gòu)——列表和字符串,下面從介紹Python語(yǔ)言程序的輸入和輸出函數(shù)開(kāi)始。2.1Python語(yǔ)言輸入與輸出在控制臺(tái)應(yīng)用程序工作模式下,Python語(yǔ)言的輸入函數(shù)為input,輸出函數(shù)為print。函數(shù)input的用法:s=input()或s=input('提示信息')函數(shù)print的用法:print()print(待輸出的一個(gè)或多個(gè)對(duì)象)print(待輸出的一個(gè)或多個(gè)對(duì)象,sep='',end='\n',file=sys.stdout)2.1Python語(yǔ)言輸入與輸出Python語(yǔ)言輸入函數(shù)input和輸出函數(shù)print的用法實(shí)例:1name=input('Pleaseinputyourname:')2print(type(name))3print(isinstance(name,str))4print(name)第1行調(diào)用Python內(nèi)置函數(shù)input將鍵盤(pán)輸入的字符串給name,input函數(shù)具有提示信息“Pleaseinputyourname:”。輸入了“YongZhang”,如果直接回車(chē),將輸入空字符。2.1Python語(yǔ)言輸入與輸出第2行調(diào)用Python內(nèi)置函數(shù)type得到name的類(lèi)型,然后,調(diào)用print函數(shù)輸出這個(gè)類(lèi)型。第3行print(isinstance(name,str))調(diào)用內(nèi)置函數(shù)isinstance判斷name是否為str字符串類(lèi)型,如果是,則返回真;否則返回假。第4行“print(name)”調(diào)用print函數(shù)輸出name。輸入了“YongZhang”,這里將輸出“YongZhang”,可見(jiàn)輸入以回車(chē)作為結(jié)束符。2.1Python語(yǔ)言輸入與輸出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語(yǔ)言輸入與輸出第6行調(diào)用input函數(shù)將鍵盤(pán)輸入的字符串賦給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語(yǔ)言輸入與輸出第9行輸入n2的類(lèi)型,將得到“<class'int'>”,表示n2為整型int,整型int在Python語(yǔ)言中也是一個(gè)類(lèi)。第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)”中的“+”號(hào)表示連接兩個(gè)字符串;print函數(shù)可以輸出字符串和整數(shù)等各種類(lèi)型的數(shù)據(jù);“sep=','”表示輸出的兩個(gè)對(duì)象間用逗號(hào)分開(kāi);“end='.\n'”表示輸出最后一個(gè)對(duì)象后,將輸出一個(gè)回車(chē)換行。2.1Python語(yǔ)言輸入與輸出14fd=open('zy0201.txt',mode='w')15print(n1,n2,s1,s2,sep=',',end='.\n',file=fd)16fd.close()2.1Python語(yǔ)言輸入與輸出第14行在當(dāng)前工程所在目錄下創(chuàng)建一個(gè)文件zy0201.txt,“mode='w'”表示打開(kāi)方式為“寫(xiě)入”類(lèi)型,打開(kāi)的文件對(duì)象設(shè)為fd。將文件對(duì)象fd不再使用時(shí),應(yīng)執(zhí)行第16行“fd.close()”關(guān)閉它。第15行使用關(guān)鍵字參數(shù)“file=fd”將文件對(duì)象作為輸出設(shè)備,即向文件對(duì)象fd中寫(xiě)入信息“28,28,28,0x1c.”。2.1Python語(yǔ)言輸入與輸出Python語(yǔ)言程序設(shè)計(jì)的一些規(guī)則如下:(1)Python語(yǔ)言中沒(méi)有“變量”這種概念,無(wú)法像其C語(yǔ)言那樣定義一個(gè)變量再給變量賦值。因此,也沒(méi)有變量類(lèi)型的說(shuō)法。需要為一些量指定名稱(chēng)時(shí),直接將那些量賦給一些合法的標(biāo)識(shí)符就行,這些標(biāo)識(shí)符的用法類(lèi)似于“變量”的用法,但含義上有本質(zhì)的區(qū)別,Python中這些標(biāo)識(shí)符并不指代具體的“變量”內(nèi)存空間。2.1Python語(yǔ)言輸入與輸出(2)Python中所有數(shù)據(jù)類(lèi)型均為類(lèi),因此,所有的數(shù)據(jù)均為對(duì)象。所以,Python是完整意義上的面向?qū)ο笳Z(yǔ)言。(3)雖然Python語(yǔ)言中沒(méi)有變量和變量類(lèi)型的說(shuō)法,但是,Python語(yǔ)言具有明確的數(shù)據(jù)類(lèi)型。(4)Python語(yǔ)言使用縮進(jìn)表示語(yǔ)句間的關(guān)系。2.1Python語(yǔ)言輸入與輸出其他一些規(guī)則如下:(1)注釋使用“#”號(hào)。任一行中,“#”及其后續(xù)的內(nèi)容均為注釋?zhuān)粫?huì)執(zhí)行。選中多行語(yǔ)句時(shí),按下快捷鍵“Ctrl+/”可以將選中的語(yǔ)句注釋掉。(2)Python語(yǔ)言具有優(yōu)秀的內(nèi)存清理機(jī)制,程序中不再使用的內(nèi)存空間,將被自動(dòng)釋放掉。這是所有計(jì)算機(jī)語(yǔ)言都極力追求的內(nèi)存管理機(jī)制。2.1Python語(yǔ)言輸入與輸出(3)Python中文件稱(chēng)為模塊,比模塊更大的概念稱(chēng)為“包”,可以理解為包含了多個(gè)文件的目錄;比模塊更小的概念稱(chēng)為類(lèi)和函數(shù),類(lèi)和函數(shù)是文件中定義的類(lèi)型。借助于import可以在當(dāng)前模塊中包含其他的模塊,從而實(shí)現(xiàn)代碼的復(fù)用。Python語(yǔ)言的內(nèi)置模塊無(wú)需import,可以直接使用這些內(nèi)置模塊及其中的函數(shù)。Python語(yǔ)言是實(shí)現(xiàn)團(tuán)隊(duì)協(xié)作編程的最佳選擇。2.1Python語(yǔ)言輸入與輸出程的方式因人而異,但是當(dāng)程序稍大后,往往需要借助于“調(diào)試”功能發(fā)現(xiàn)程序的錯(cuò)誤。PyCharm提供了優(yōu)秀的調(diào)試功能。圖中,單擊程序行號(hào)所在處,可以為該行語(yǔ)句設(shè)置斷點(diǎn)。其下方窗口中具有“調(diào)試器”和“控制臺(tái)”選項(xiàng)。調(diào)試工作窗口2.1Python語(yǔ)言輸入與輸出1importre23if__name__=='__main__':4name=input('Pleaseinputyourname:')5print(type(name))6print(isinstance(name,str))7print(name)2.1Python語(yǔ)言輸入與輸出第1行使用import裝載了re模塊,re模塊為正則表達(dá)式模塊,正則表達(dá)式是指與字符串匹配相關(guān)的規(guī)則表達(dá)式。第3行“if__name__=='__main__':”使得第4~20行均為本模塊內(nèi)可執(zhí)行的語(yǔ)句,當(dāng)本模塊被其他模塊調(diào)用時(shí),這些語(yǔ)句不被執(zhí)行。2.1Python語(yǔ)言輸入與輸出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語(yǔ)言輸入與輸出

第9行“age=input('Pleaseinputyourage:')”將鍵盤(pán)輸入的字符串賦給age。

第10行語(yǔ)句使用了正則表達(dá)式判斷age字符串中是否只含有數(shù)字,且不以數(shù)字0開(kāi)頭。這里“re.match”表示調(diào)用模塊re的match函數(shù),如果它的第一個(gè)參數(shù)(正則表達(dá)式)和第二個(gè)參數(shù)(字符串)匹配成功,則返回匹配的字符串;否則,返回None。

如果第10行的if語(yǔ)句條件為真,即字符串a(chǎn)ge中僅包含有效的數(shù)字字符,則執(zhí)行第11~20行。2.1Python語(yǔ)言輸入與輸出

前面的正則表達(dá)式“^[1-9]\d*$”表示從字符串的頭部(用^表示)開(kāi)始匹配,一直匹配到字符串的尾部(用$表示),“[1-9]”表示匹配字符串中的一個(gè)數(shù)字1至9的字符,“\d”可以匹配數(shù)字0至9的字符,“*”表示重復(fù)匹配0次或多次,“\d*”表示匹配數(shù)字0~9的字符0次或多次。因此正則表達(dá)式“^[1-9]\d*$”表示匹配的字符串應(yīng)為“以數(shù)字1至9的字符開(kāi)頭,后續(xù)字符只能為0至9的數(shù)字字符”。2.1Python語(yǔ)言輸入與輸出18fd=open('zy0201.txt',mode='w')19print(n1,n2,s1,s2,sep=',',end='.\n',file=fd)20fd.close()02Python基本數(shù)據(jù)類(lèi)型2.2Python基本數(shù)據(jù)類(lèi)型Python語(yǔ)言的基本數(shù)據(jù)類(lèi)型包括整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)等數(shù)值類(lèi)型、布爾類(lèi)型、字符串類(lèi)型、字節(jié)串類(lèi)型和空類(lèi)型等。字符串類(lèi)型將在第2.5節(jié)介紹,空類(lèi)型只有一個(gè)值None,字節(jié)串類(lèi)型為形如“b'Hello'”(Hello可替換為任意ASCII字符或任意8比特表示的字符(擴(kuò)展ASCII集中的字符))的字符串,布爾類(lèi)型只有Ture和False兩個(gè)值。這里重點(diǎn)介紹數(shù)值類(lèi)型的數(shù)據(jù)類(lèi)型。2.2Python基本數(shù)據(jù)類(lèi)型Python語(yǔ)言中,數(shù)值類(lèi)型的規(guī)則如下:(1)整數(shù)是指十進(jìn)制整數(shù),為不帶小數(shù)點(diǎn)的數(shù)值,具有無(wú)限精度(嚴(yán)格上講,整數(shù)的大小受計(jì)算機(jī)內(nèi)存的大小限制)。而二進(jìn)制、八進(jìn)制和十六制制的整數(shù)通常以字符串的形式表示。例如,3、5、100、-8等均為整數(shù),將這些數(shù)作為type函數(shù)的參數(shù),將返回“<class‘int’>”。2.2Python基本數(shù)據(jù)類(lèi)型(2)浮點(diǎn)數(shù)占8個(gè)字節(jié),由于Python語(yǔ)言是用C語(yǔ)言實(shí)現(xiàn)的,Python中的浮點(diǎn)數(shù)就是C語(yǔ)言中的double類(lèi)型,存儲(chǔ)格式為IEEE-754標(biāo)準(zhǔn)。浮點(diǎn)數(shù)是指帶有小數(shù)點(diǎn)的數(shù),或者是帶有指數(shù)部分的數(shù),例如,3.、.12、5.3、4e1、2e0等都是浮點(diǎn)數(shù),將這些數(shù)作為type函數(shù)的參數(shù)將返回“<class'float'>”。2.2Python基本數(shù)據(jù)類(lèi)型(3)復(fù)數(shù)的實(shí)部和虛部一定都是浮點(diǎn)數(shù),即使向?qū)嵅炕蛱摬抠x了整數(shù),也自動(dòng)轉(zhuǎn)化為浮點(diǎn)數(shù)。例如,a=complex(3,5)得到復(fù)數(shù)a,其實(shí)部為a.real,虛部分為a.imag,此時(shí),type(a)將返回“<class'complex'>”,而type(a.real)和type(a.imag)都將返回“<class'float'>”。2.2Python基本數(shù)據(jù)類(lèi)型Python語(yǔ)言中,復(fù)數(shù)的常規(guī)運(yùn)算:(1)求模運(yùn)算。借助于內(nèi)置函數(shù)abs可以計(jì)算一個(gè)復(fù)數(shù)的模,也可以計(jì)算一個(gè)整數(shù)或浮點(diǎn)數(shù)的絕對(duì)值。abs函數(shù)作用于復(fù)數(shù)和浮點(diǎn)數(shù)時(shí)返回浮點(diǎn)數(shù),而作用于整數(shù)時(shí),返回整數(shù)。(2)求輻角。需要裝載cmath包(importcmath),然后,執(zhí)行“cmath.phase(a)”返回復(fù)數(shù)a的輻角,當(dāng)a為正數(shù)時(shí),返回0.0;當(dāng)a為“1j”。03Python語(yǔ)言程序結(jié)構(gòu)2.3Python運(yùn)算符Python語(yǔ)言中,數(shù)據(jù)的基本處理借助于運(yùn)算符實(shí)現(xiàn)。引用早期的匯編語(yǔ)言的說(shuō)法,運(yùn)算符稱(chēng)為操作符,數(shù)據(jù)稱(chēng)為操作數(shù)。嚴(yán)格意義上,Python語(yǔ)言只有單目運(yùn)算符和雙目運(yùn)算符。運(yùn)算符具有優(yōu)先級(jí)和結(jié)合性(指運(yùn)算順序)等屬性,在一個(gè)(表達(dá)式)語(yǔ)句中,先計(jì)算優(yōu)先級(jí)高的運(yùn)算符(及其直接相關(guān)的操作數(shù));再計(jì)算優(yōu)先級(jí)較低的運(yùn)算符;同級(jí)別優(yōu)先級(jí)的運(yùn)算符,按約定的結(jié)合性(運(yùn)算順序)進(jìn)行運(yùn)算,一般為自左向右運(yùn)算(賦值運(yùn)算符從右向左)。2.3.1算術(shù)運(yùn)算符Python語(yǔ)言的算術(shù)運(yùn)算符:2.3.1算術(shù)運(yùn)算符2.3.2位運(yùn)算符2.3.3關(guān)系運(yùn)算符序號(hào)運(yùn)算符含義用法舉例1==等于3==5得到False2!=不等于3!=5得到True3>大于5>3得到True4>=大于等于5>=3得到True5<小于5<3得到False6<=小于等于5<=3得到False2.3.3關(guān)系運(yùn)算符在Python語(yǔ)言中,關(guān)系運(yùn)算符可以直接組合在一起使用,例如,3<=5>4在Python語(yǔ)言中返回True;5>3<8>4將返回真;10>7>5>3也將返回True。盡量避免這種組合使用。關(guān)系運(yùn)算符連接成的表達(dá)式稱(chēng)為關(guān)系表達(dá)式,關(guān)系表達(dá)式的結(jié)果為邏輯值True或False。2.3.4關(guān)系運(yùn)算符Python語(yǔ)言中邏輯運(yùn)算符:在Python語(yǔ)言中,邏輯運(yùn)算符可以對(duì)整數(shù)和浮點(diǎn)數(shù)進(jìn)行操作,并且,將0視為假,非0視為真。2.3.5賦值運(yùn)算符Python語(yǔ)言中的“賦值”運(yùn)算符:2.3.5賦值運(yùn)算符在Python語(yǔ)言中,不支持“++”和“--”運(yùn)算符,使用y+=1表示y累加1的操作,使用y-=1表示y自減1的操作。2.3.6高級(jí)運(yùn)算符高級(jí)運(yùn)算符:“id”本身不屬于運(yùn)算符,是Python語(yǔ)言的內(nèi)置函數(shù),但是id函數(shù)用于返回其參數(shù)的內(nèi)存地址,沒(méi)有其他特別的意義,本書(shū)將id視為運(yùn)算符。2.3.6高級(jí)運(yùn)算符2.3.7Python運(yùn)算符優(yōu)先級(jí)Python運(yùn)算符的優(yōu)先級(jí)排序:2.3.7Python運(yùn)算符優(yōu)先級(jí)Python運(yùn)算符的優(yōu)先級(jí)排序:04列表2.4列表列表是Python語(yǔ)言中最重要的數(shù)據(jù)結(jié)構(gòu)。列表也是另一種計(jì)算機(jī)語(yǔ)言——Wolfram語(yǔ)言中最重要的數(shù)據(jù)結(jié)構(gòu)。在Python語(yǔ)言中,用方括號(hào)括起來(lái)的字面量和“標(biāo)簽”(變量)均為列表,列表中可以嵌套新的子列表,列表中的元素可為任意數(shù)據(jù)類(lèi)型。2.4.1創(chuàng)建列表Python語(yǔ)言中,列表是由方括號(hào)括起來(lái)的以逗號(hào)為分隔符的一串?dāng)?shù)據(jù)組成,列表中的元素可以為任意類(lèi)型。創(chuàng)建列表的常用方法有三種:(1)直接輸入列表元素:(2)使用list函數(shù)生成列表。(3)借助于append和extend函數(shù)生成列表。2.4.2列表元素訪問(wèn)法列表中元素的索引號(hào)從左向右為從0開(kāi)始且按步長(zhǎng)1累加,從右向左為從-1開(kāi)始按步長(zhǎng)1減少。例如,列表t1=[10,11,12,13,14,15,16]則t1中各個(gè)元素的索引號(hào)從左向右依次為0、1、2、3、4、5、6;從右向左依次為-1、-2、-3、-4、-5、-6、-7。2.4.2列表元素訪問(wèn)法列表元素除了借助于索引號(hào)單獨(dú)訪問(wèn)外,還可以使用于索引號(hào)的范圍集體訪問(wèn),索引號(hào)的范圍表示方法為“首索引號(hào):尾索引號(hào):步長(zhǎng)”,缺省首索引號(hào)為0,缺省尾索引號(hào)為最后一個(gè)元索的下一個(gè)位置(尾索引號(hào)不包含在有效索引范圍內(nèi)),缺省步長(zhǎng)為1。對(duì)上面的t1,下面的集體訪問(wèn)方式將返回列表形式:t1[3:4]#返回包含第3個(gè)元素的列表[13]t1[3:5]#返回包含第3、4個(gè)元素的列表[13,14]t1[::]、t1[:]和t1含義相同,均返回整個(gè)列表。2.4.3常用列表處理方法2.4.3常用列表處理方法2.4.3常用列表處理方法05字符串2.5字符串在各種計(jì)算機(jī)語(yǔ)言,字符串是主要的交互信息承載媒體,具有特殊重要的地位。在Python中,字符和字符串均以u(píng)tf-8編碼形式存儲(chǔ),utf-8編碼是一種可變長(zhǎng)度編碼方式,以1至4個(gè)字節(jié)對(duì)數(shù)據(jù)進(jìn)行編程存儲(chǔ),例如,utf-8規(guī)定,ASCII碼以1個(gè)字節(jié)存儲(chǔ),漢字以3個(gè)字節(jié)存儲(chǔ)等。Python語(yǔ)言完全支持中文。2.5.1字符串表示在Python語(yǔ)言中,字符串字面值用單引號(hào)或雙引號(hào)引起來(lái),下面以英文和中文字符為例,介紹字符串的表示方法: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)'))”輸出這個(gè)中文字符串的類(lèi)型,將得到“<class'str'>”,說(shuō)明這是一個(gè)str類(lèi)定義的對(duì)象類(lèi)型。第4行“print(len('信息安全與智能系統(tǒng)'))”輸出這個(gè)中文字符串的長(zhǎng)度,將得到9,即每個(gè)漢字視為一個(gè)符號(hào)。2.5.1字符串表示第5行“print('Aredapple.')”輸出英文字符串“Aredapple.”;第6行“print(len('Aredapple.'))”輸出這個(gè)英文字符串的長(zhǎng)度,得到12,注意:空格也算符號(hào)。第7行“print('Aredapple.'*2)”輸出這個(gè)字符串兩次,字符串可視為“列表”,“*2”視為重復(fù)2次。2.5.1字符串表示第8行“str='蝴蝶落在appletree'”將包含有漢字和英文字符的字符串賦給str;第9行“print(str)”輸出這個(gè)字符串str;第10行“print(len(str))”輸出字符串str的長(zhǎng)度,得到14,即每個(gè)漢字和每個(gè)英文字符均視為一個(gè)符號(hào)。2.5.2字符串常用方法2.5.2字符串常用方法5+合并字符串。例如:str1+str2得到一個(gè)新的字符串“Aredapple.39”6join合并字符串。例如:''.join([str1,str2,str3])將str1、str2和str3合并為一個(gè)字符串,得到“Aredapple.3939.66”。使用join連接字符串時(shí),可以指定分隔符,例如:“'---'.join([str1,str2,str3])”得到“Aredapple.---39---39.66”7split分隔字符串,與join功能相反。分隔字符串后得到一個(gè)字符串列表。例如:str1.split()得到['A','red','apple.']。可以指定定符串的分隔符,例如:str1.splisep='red')得到['A','apple.']。8find查找字符串中的子串。例如:str1.find('red')得到2,即子串“red”(的首字符)在str1中出現(xiàn)的位置。可以指定搜索的索引位置范圍,例如:str1.find('e',4,-1)得到10,這里的“4”表示搜索的起始索引位置,“-1”表示搜索的終索引位置(不含),索引號(hào)從0開(kāi)始。如果查找不到,則返回-12.5.2字符串常用方法9rfind與find類(lèi)似,從右邊查找子符串中的子串10index與find類(lèi)似,但是查找不到時(shí),拋出異常11rindex與index類(lèi)似,但是從右邊查找12strip刪除字符串左右兩邊的空格或指定的字符。例如:str1.strip('.')得到“Aredapple”。13lstrip刪除字符串左邊的空格或指定的字符14rstrip刪除字符串右邊的空格或指定的字符15partition將字符串分隔為三個(gè)子串。例如:str1.partition('red')得到“('A','red','apple.')”(這是一個(gè)元組,在第4章介紹);如果partition的參數(shù)不是子符串的子串,則返回原始字符串和兩個(gè)空字符,例如:str1.partition('rede')得到“('Aredapple.','','')”2.5.2字符串常用方法16rpartition與partition類(lèi)似,但是從右邊開(kāi)始匹配函數(shù)的參數(shù)子符串17startswith詢(xún)問(wèn)字符串是否以給定的子串開(kāi)始,如果是,返回True;否則,返回False。例如,str1.startswith('A')返回True18endswith詢(xún)問(wèn)字符串是否以給定的子串結(jié)尾,如果是,返回True;否則,返回False。例如,str1.endswith('ple.')返回True19isalpha詢(xún)問(wèn)字符串是否僅包含字母(指A至Z和a至z的字母),如果是,則返回True;否則,返回False。例如,str1.isalpha()得到False20isalnum詢(xún)問(wèn)字符串是否僅包含字母和數(shù)字(指0至9的數(shù)字),如果是,則返回True;否則,返回False。例如,str3.isalnum()得到False21isdecimal詢(xún)問(wèn)字符串是否僅包含數(shù)字(指0至9的數(shù)字),如果是,則返回True;否則,返回False。例如,str2.isdecimal()得到True;str3.isdecimal()得到False2.5.2字符串常用方法22isdigit包含了isdecimal的功能,

還支持字節(jié)串類(lèi)型數(shù)據(jù),例如,str2.isdigit()得到True;b'123'.isdigit()返回True23isnumeric一般地,可認(rèn)為等同于isdecimal,均不支持小數(shù)點(diǎn)24isspace詢(xún)問(wèn)字符串(至少有一個(gè)字符)是否全由空白字符構(gòu)成,如果是,則返回True;否則,返回False25istitle詢(xún)問(wèn)字符串中的每個(gè)單詞是否以大寫(xiě)字母開(kāi)頭(其余均為小寫(xiě)),如果是,則返回True;否則,返回False。例如:'ARedApple'.istitle()返回True26title將字符串中的單詞的首字母大寫(xiě)(其他字母小寫(xiě))。例如:'AREDaPPle'.title()得到ARedApple2.5.2字符串常用方法27count統(tǒng)計(jì)作為參數(shù)的子串在字符串中出現(xiàn)的次數(shù),例如:str1.count('e')得到2??梢灾付ㄋ阉鞯姆秶?,例如:str1.count('e',4,-1)統(tǒng)計(jì)字符串str1從第4個(gè)索引位置至倒數(shù)第2個(gè)索引位置中出現(xiàn)的字符“e”的次數(shù),這里的“4”為搜索的起始位置,“-1”為搜索的最終位置(不含),“-1”省略時(shí)將搜索至最后一個(gè)字符28replace替按字符串中的子串。例如:str1.replace('red','green')得到Agreenapple.29maketrans專(zhuān)為translate服務(wù)的替換規(guī)則,例如:tab=str1.maketrans('red','big'),該規(guī)則要求big規(guī)換red,且兩個(gè)子串的長(zhǎng)度要相同。注意:是對(duì)應(yīng)位置字符替換。因此,可以實(shí)現(xiàn)子串的整體替換,也可是對(duì)應(yīng)位置的部分子串或字符替換30translate使用maketrans制定的規(guī)則完成替換,例如:str1.translate(tab)得到的str1為“Abigappli.”2.5.3格式化字符串將數(shù)值型數(shù)據(jù)等類(lèi)型轉(zhuǎn)化為字符串時(shí),需要對(duì)這些數(shù)據(jù)類(lèi)型進(jìn)行格式調(diào)整,俗稱(chēng)“格式化”,這樣得到的字符串,稱(chēng)為“格式化字符串”。格式化字符串的最主要目的是用作輸出結(jié)果,不僅用于print函數(shù)中,而且也用于圖像用戶(hù)界面中。在Python語(yǔ)言中,常用的格式化字符串的方法有三種:(1)使用“f'{}'”形式格式化字符串(2)使用format方法格式化字符串(3)使用“%”方法格式化2.5.3格式化字符串(1)使用“f‘{}’”形式格式化字符串:序號(hào)典型用法實(shí)例1f'{val:m.nf},其中,“m.nf”表示顯示浮點(diǎn)數(shù)、顯示數(shù)據(jù)長(zhǎng)度為m、保留n位小數(shù)。如果m小于實(shí)際數(shù)據(jù)長(zhǎng)度,則m的值無(wú)效f'{3.14159:7.3f}得到“3.142”2f'{val:md},其中,“md”表示顯示整數(shù)、顯示數(shù)據(jù)長(zhǎng)度為m。如果m小于實(shí)際數(shù)據(jù)長(zhǎng)度,則m的值無(wú)效。這里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é)本章首先基于控制臺(tái)詳細(xì)介紹了Python語(yǔ)言的輸入和輸出函數(shù),然后,介紹了Python語(yǔ)言的基本數(shù)據(jù)類(lèi)型,討論了Python語(yǔ)言的運(yùn)算符及其優(yōu)先級(jí),其中包括算術(shù)運(yùn)算符、位運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符和高級(jí)運(yùn)算符。借助于id函數(shù)討論了Python語(yǔ)言中沒(méi)有常規(guī)意義下的“變量”的概念,并且“賦值”的說(shuō)法也不準(zhǔn)確,本書(shū)中使用“標(biāo)簽”的概念,但仍沿用習(xí)慣使用了“賦值”給“標(biāo)簽”的說(shuō)法。接著,重點(diǎn)討論了Python語(yǔ)言最重要的數(shù)據(jù)類(lèi)型——列表,包括列表的創(chuàng)建、元素訪問(wèn)和修改。最后,介紹了Python語(yǔ)言中字符串的表示方法,闡述了字符串對(duì)象相關(guān)的內(nèi)置函數(shù),討論了格式化字符串的方法。07習(xí)題

習(xí)題1.編寫(xiě)Python程序,輸入一個(gè)正整數(shù),輸出它的十六進(jìn)制形式。2.編寫(xiě)Python程序,從鍵盤(pán)輸出2個(gè)數(shù)值,輸出它們的乘積。3.編寫(xiě)Python程序,計(jì)算兩個(gè)復(fù)數(shù)5+9j和11-3j的乘積。4.創(chuàng)建一個(gè)列表,包括1至100的整數(shù)序列,并求這些整數(shù)的和。5.創(chuàng)建一個(gè)列表,包括1至100的整數(shù)序列,顯示被3和5整數(shù)的數(shù)。6.創(chuàng)建兩個(gè)列表[7,9,10]和[13,11,4],合并這兩個(gè)列表為一個(gè)列表。7.創(chuàng)建一個(gè)列表[8,10,3,6,7,12,5,13,1,9],按升序排列該列表。8.創(chuàng)建二個(gè)二級(jí)嵌套列表[[8,10,11],[3,7,4]]和[[4,6],[2,5],[-3,-1]],計(jì)算這兩個(gè)矩陣的乘積。9.凱撒密碼將一個(gè)字符加密為其后的第3個(gè)字符,例如,A被加密為D,B被加密E,最后的三個(gè)字符X、Y和Z,用(循環(huán))后的三個(gè)字符A、B和C加密?,F(xiàn)在,有一個(gè)明文字符串為“Anappletree.”,試將其加密為密文(小數(shù)點(diǎn)不加密)。

第三章程序控制Contents順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)本章小結(jié)習(xí)題排序?qū)嵗?1順序結(jié)構(gòu)高級(jí)語(yǔ)言程序只有順序、分支和循環(huán)三種程序結(jié)構(gòu),這些結(jié)構(gòu)可以實(shí)現(xiàn)所有的計(jì)算機(jī)算法。作為一種高級(jí)語(yǔ)言,Python的程序控制具有極致精簡(jiǎn)的特點(diǎn),每行代碼為一條執(zhí)行語(yǔ)句,處于同一縮進(jìn)位置的所有語(yǔ)句按位置構(gòu)成順序結(jié)構(gòu);由if語(yǔ)句或match語(yǔ)句及其下一級(jí)縮進(jìn)的語(yǔ)句構(gòu)成分支結(jié)構(gòu);由while語(yǔ)句或for語(yǔ)言及其下一級(jí)縮進(jìn)的語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu)。本節(jié)將詳細(xì)介紹Python語(yǔ)言程序的控制結(jié)構(gòu)。3.1順序結(jié)構(gòu)順序結(jié)構(gòu)的程序的執(zhí)行按照其語(yǔ)句的位置先后順序執(zhí)行。順序結(jié)構(gòu)是計(jì)算機(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:b3pjnl7.')第1行裝載math模塊,第10行使用了math模塊中的sqrt函數(shù)。第2行調(diào)用input函數(shù)讀取鍵盤(pán)的輸入字符串,作為點(diǎn)A的x坐標(biāo),第6行“x1=float(x1)”將x1轉(zhuǎn)化為浮點(diǎn)數(shù),仍使用標(biāo)簽x1。3.1順序結(jié)構(gòu)第3行讀取鍵盤(pán)的輸入字符串,作為點(diǎn)A的y坐標(biāo)。第7行將y1轉(zhuǎn)化為浮點(diǎn)數(shù),仍使用標(biāo)簽y1。第4行讀取鍵盤(pán)的輸入字符串,作為點(diǎn)B的x坐標(biāo)第8行將x2轉(zhuǎn)化為浮點(diǎn)數(shù),仍使用標(biāo)簽x2。第5行讀取鍵盤(pán)的輸入字符串,作為點(diǎn)B的y坐標(biāo)。第9行將y2轉(zhuǎn)化為浮點(diǎn)數(shù),仍使用標(biāo)簽y2。3.1順序結(jié)構(gòu)第10行調(diào)用math模塊的sqrt函數(shù)計(jì)算兩點(diǎn)間的距離。第11行輸出兩個(gè)點(diǎn)A和B以及它們的歐氏距離d。模塊zym0301執(zhí)行結(jié)果02分支結(jié)構(gòu)3.2分支結(jié)構(gòu)程序的分支結(jié)構(gòu)用于實(shí)現(xiàn)有條件的選擇特定語(yǔ)句執(zhí)行。Python語(yǔ)言中使用縮進(jìn)表示同一分支結(jié)構(gòu)中的語(yǔ)句。例如:if條件表達(dá)式:

語(yǔ)句1

語(yǔ)句2else:

語(yǔ)句3

語(yǔ)句43.2分支結(jié)構(gòu)Python語(yǔ)言中,縮進(jìn)也用于表示循環(huán)結(jié)構(gòu)中的歸屬關(guān)系。對(duì)縮進(jìn)格式而言,一條語(yǔ)句(一般為控制語(yǔ)句)下的具有相同縮進(jìn)量的所有語(yǔ)句均屬于該語(yǔ)句的控制部分。只是為了程序代碼美觀,每級(jí)縮進(jìn)均使用相同的縮進(jìn)量。分支結(jié)構(gòu)也稱(chēng)選擇結(jié)構(gòu),Python語(yǔ)言中,使用if或match關(guān)鍵字實(shí)現(xiàn)分支控制。3.2.1if語(yǔ)句if語(yǔ)句具有四種常用結(jié)構(gòu),如下所示:(1)單個(gè)if結(jié)構(gòu)if條件表達(dá)式:

語(yǔ)句1

……

語(yǔ)句n上述結(jié)構(gòu)為單個(gè)if結(jié)構(gòu),即當(dāng)“條件表達(dá)式”為真時(shí),執(zhí)行“語(yǔ)句1”至“語(yǔ)句n”。3.2.1if語(yǔ)句(2)標(biāo)準(zhǔn)if-else結(jié)構(gòu)if條件表達(dá)式:

語(yǔ)句1

……

語(yǔ)句melse:

語(yǔ)句m+1

……

語(yǔ)句n3.2.1if語(yǔ)句第二種結(jié)構(gòu)為標(biāo)準(zhǔn)的if-else結(jié)構(gòu),即當(dāng)“條件表達(dá)式”為真時(shí),執(zhí)行“語(yǔ)句1”至“語(yǔ)句m”;否則,執(zhí)行“語(yǔ)句m+1”至“語(yǔ)句n”。如果if部分沒(méi)有語(yǔ)句,用“pass”語(yǔ)句表示。3.2.1if語(yǔ)句(3)if-elif-else結(jié)構(gòu)if條件表達(dá)式1:

語(yǔ)句1

……

語(yǔ)句kelif條件表達(dá)式2:

語(yǔ)句k+1

……

語(yǔ)句m3.2.1if語(yǔ)句elif條件表達(dá)式3:

語(yǔ)句m+1

……

語(yǔ)句p……#其他的elif語(yǔ)句else:

語(yǔ)句t

……

語(yǔ)句n3.2.1if語(yǔ)句第三種結(jié)構(gòu)是典型的多分支結(jié)構(gòu),即如果“條件表達(dá)式1”為真時(shí),執(zhí)行“語(yǔ)句1”至“語(yǔ)句k”;否則,如果“條件表達(dá)式2”為真時(shí),執(zhí)行“語(yǔ)句k+1”至“語(yǔ)句m”;否則,如果“條件表達(dá)式3”為真時(shí),執(zhí)行“語(yǔ)句m+1”至“語(yǔ)句p”;否則,當(dāng)上述所有“條件表達(dá)式”均為假時(shí),執(zhí)行“else”部分的“語(yǔ)句t”至“語(yǔ)句n”。3.2.1if語(yǔ)句(4)if語(yǔ)句的嵌套結(jié)構(gòu)if結(jié)構(gòu)中的if部分、else部分和elif部分中均可再嵌入if結(jié)構(gòu),此時(shí),注意各個(gè)部分的縮進(jìn)關(guān)系,以保證if部分與其相應(yīng)的elif或else部分相一致,不至于出現(xiàn)“張冠李戴”的問(wèn)題。3.2.1if語(yǔ)句例:輸入一數(shù)值x,計(jì)算分段函數(shù)f(x)的值:3.2.1if語(yǔ)句1x=input('Pleaseinputanumber:')2x=float(x)3y=04ifx>1:5y=x+16elif0<x<=1:7y=3*x-13.2.1if語(yǔ)句8elif-1<x<=0:9y=-x**2-110else:11y=2*x**312print(f'{x}produces{y:.2f}')3.2.1if語(yǔ)句第1~12行為一個(gè)功能模塊,求解上述的“問(wèn)題”。第1行“x=input(‘Pleaseinputanumber:’)”從鍵盤(pán)輸入一個(gè)表達(dá)數(shù)值的字符串給x。第2行“x=float(x)”將x轉(zhuǎn)化為浮點(diǎn)數(shù),仍用x作為標(biāo)簽。第3行“y=0”將0賦給y。第4~11行為一個(gè)多分支結(jié)構(gòu),對(duì)應(yīng)于式(1)的四種情況,注意在Python語(yǔ)言中,支持這種“0<x<=1”級(jí)聯(lián)的關(guān)系不等式。第4行“ifx>1:”如果x大于1,則執(zhí)行第43行“y=x+1”將x與1的和賦給y;3.2.1if語(yǔ)句如果第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;在上述情況都不成立時(shí),執(zhí)行第11行“y=2*x**3”將2x3賦給y。第12行“print(f'{x}produces{y:.2f}')”在屏幕上打印x和y的值。3.2.1if語(yǔ)句if結(jié)構(gòu)可以寫(xiě)成一條語(yǔ)句,形如:y=表達(dá)式1if條件else表達(dá)式2表示當(dāng)“條件”為真時(shí),將“表達(dá)多1”的值賦給y,否則將“表達(dá)式2”的值賦給y?!氨磉_(dá)式2”還可以嵌入新的if結(jié)構(gòu)。3.2.2match語(yǔ)句match多分支控制語(yǔ)句是Python3.10新添加的控制語(yǔ)句,其基本語(yǔ)法形式為:match表達(dá)式:case表達(dá)式1:

語(yǔ)句1

……

語(yǔ)句k3.2.2match語(yǔ)句case表達(dá)式2:

語(yǔ)句k+1

……

語(yǔ)句p

……#其他的case情況case_:

語(yǔ)句m

……

語(yǔ)句n3.2.2match語(yǔ)句上述match分支的功能非常強(qiáng)大,表現(xiàn)在這里的“表達(dá)式”可以為字符串、數(shù)值、邏輯值、列表、元組和字典等,每個(gè)case部分可以添加條件限制,用“if表達(dá)式”表示。當(dāng)match后面的“表達(dá)式”與某個(gè)case后面的表達(dá)式匹配后,則執(zhí)行該case部分的語(yǔ)句。3.2.2match語(yǔ)句例:當(dāng)輸入x為0或1或2時(shí),輸出“低分”;當(dāng)輸入3或4,輸出“中分”;當(dāng)輸入5時(shí),輸出“高分”;當(dāng)輸入小于0或大于5的數(shù)時(shí),提示輸入有誤1if__name__=='__main__':2x=int(input('Inputanumber:'))3matchx:4case0|1|2:5print('Lowmark.')6case3|4:7print('Mediummark.')3.2.2match語(yǔ)句8case5:9print('Highmark.')10case_ifx>5:11print('Inputistoobig.')12case_ifx<0:13print('Inputistoosmall.')3.2.2match語(yǔ)句第2行“x=int(input('Inputanumber:'))”從鍵盤(pán)讀取一個(gè)整數(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時(shí),執(zhí)行第5行語(yǔ)句“print('Lowmark.')”,即輸出“Lowmark.”。這里的“|”表示“或”。第6行“case3|4:”表示x的值為3或4時(shí),執(zhí)行第7行“print('Mediummark.')”,輸出“Mediummark.”。3.2.2match語(yǔ)句第8行“case5:”表示x的值為5時(shí),將執(zhí)行第9行輸出“Highmark.”。第10行“case_ifx>5:”表示當(dāng)x的值不滿足前面的各種case情況時(shí),且滿足限定條件x大于5時(shí),將執(zhí)行第11行“print('Inputistoobig.')”,輸出“Inputistoobig.”。第12行“case_ifx<0:”表示當(dāng)x的值不滿足前面的各種case情況且滿足限定條件x小于0時(shí),將執(zhí)行第13行“print('Inputistoosmall.')”,輸出“Inputistoosmall.”。3.2.2match語(yǔ)句Match語(yǔ)句例子執(zhí)行結(jié)果:模塊zym0304執(zhí)行結(jié)果03循環(huán)結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)Python語(yǔ)言中,只有兩個(gè)循環(huán)控制方式,即while結(jié)構(gòu)和for結(jié)構(gòu)。while結(jié)構(gòu)有時(shí)稱(chēng)為“當(dāng)型”循環(huán),即當(dāng)while后的表達(dá)式為真時(shí),執(zhí)行while結(jié)構(gòu)中的語(yǔ)句;如果while后的表達(dá)式為假,則跳過(guò)while結(jié)構(gòu)執(zhí)行其后的語(yǔ)句。3.3.1while結(jié)構(gòu)Python語(yǔ)言中,只有兩個(gè)循環(huán)控制方式,即while結(jié)構(gòu)和for結(jié)構(gòu)。while結(jié)構(gòu)有時(shí)稱(chēng)為“當(dāng)型”循環(huán),即當(dāng)while后的表達(dá)式為真時(shí),執(zhí)行while結(jié)構(gòu)中的語(yǔ)句;如果while后的表達(dá)式為假,則跳過(guò)while結(jié)構(gòu)執(zhí)行其后的語(yǔ)句。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)的語(yǔ)法為:while條件表達(dá)式:

語(yǔ)句1

……

語(yǔ)句n在while循環(huán)結(jié)構(gòu)中,每次循環(huán)均需判斷“條件表達(dá)式”的值,如果為真,則執(zhí)行“語(yǔ)句1”至“語(yǔ)句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”為真時(shí),循環(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)的語(yǔ)法為:while條件表達(dá)式:

語(yǔ)句1

……

語(yǔ)句melse:

語(yǔ)句m+1

……

語(yǔ)句n3.3.1while結(jié)構(gòu)上述結(jié)構(gòu)表示如果while后面的“條件表達(dá)式”為真,則循環(huán)執(zhí)行“語(yǔ)句1”至“語(yǔ)句m”;如果“條件表達(dá)式”為假,則執(zhí)行“else:”后的“語(yǔ)句m+1”至“語(yǔ)句n”。表面上看,“else:”部分是多余的,好像總被執(zhí)行到。通常的while結(jié)構(gòu),當(dāng)其后的“條件表達(dá)式”為假時(shí),將跳出while結(jié)構(gòu),執(zhí)行其后的語(yǔ)句,所以有沒(méi)有“else:”,“語(yǔ)句m+1”至“語(yǔ)句n”總被執(zhí)行到。但是有一個(gè)例外,這個(gè)例外和break語(yǔ)句有關(guān)。3.3.1while結(jié)構(gòu)break語(yǔ)句可以用于while結(jié)構(gòu)(和for結(jié)構(gòu))中,用于跳出while結(jié)構(gòu)(和for結(jié)構(gòu))。對(duì)于while-else結(jié)構(gòu)而言,break語(yǔ)句將跳出整個(gè)while-else結(jié)構(gòu),因此,如果在while部分執(zhí)行時(shí)遇到了break語(yǔ)句,將跳出整個(gè)while-else結(jié)構(gòu),即else部分的語(yǔ)句將不被執(zhí)行。3.3.1while結(jié)構(gòu)1if__name

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論