




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《Python程序設(shè)計(jì)》
第1章Python語(yǔ)言概述第1章Python語(yǔ)言概述.pptx第2章Python程序設(shè)計(jì)基礎(chǔ).pptx第3章基本數(shù)據(jù)類型與表達(dá)式.pptx第4章程序的基本控制結(jié)構(gòu).pptx第5章組合數(shù)據(jù)類型.pptx第6章函數(shù).pptx第7章文件操作.pptx第8章面向?qū)ο蟪绦蛟O(shè)計(jì).pptx第9章錯(cuò)誤和異常處理.pptx第11章網(wǎng)絡(luò)爬蟲(chóng)入門與應(yīng)用.pptx第12章圖形用戶界面設(shè)計(jì).pptx全套PPT課件1本章學(xué)習(xí)要求:理解程序設(shè)計(jì)的基本概念了解Python語(yǔ)言的特點(diǎn)和應(yīng)用領(lǐng)域掌握Python開(kāi)發(fā)環(huán)境的搭建掌握Python程序的運(yùn)行方式掌握使用IDLE編寫和執(zhí)行Python源文件程序了解在線幫助和相關(guān)資源1.1計(jì)算機(jī)程序設(shè)計(jì)概述1.1.1程序與程序設(shè)計(jì)語(yǔ)言1.程序
什么是程序?廣義地講,程序就是為完成某一任務(wù)而制定的一組操作步驟。按該操作步驟執(zhí)行,就完成程序所規(guī)定的任務(wù)。2.程序設(shè)計(jì)語(yǔ)言
人和計(jì)算機(jī)交流信息使用的語(yǔ)言稱為計(jì)算機(jī)語(yǔ)言或稱程序設(shè)計(jì)語(yǔ)言21.1.1程序與程序設(shè)計(jì)語(yǔ)言(1)機(jī)器語(yǔ)言(MachineLanguage)
(2)匯編語(yǔ)言(AssembleLanguage)
匯編語(yǔ)言程序的執(zhí)行過(guò)程
匯編語(yǔ)言和機(jī)器語(yǔ)言都是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言,一般稱為低級(jí)語(yǔ)言。
31.1.1程序設(shè)計(jì)語(yǔ)言的發(fā)展(3)高級(jí)語(yǔ)言(HighLevelLanguage)
高級(jí)語(yǔ)言是一種與硬件結(jié)構(gòu)及指令系統(tǒng)無(wú)關(guān),表達(dá)方式比較接近自然語(yǔ)言和數(shù)學(xué)表達(dá)式的一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。
優(yōu)點(diǎn):描述問(wèn)題能力強(qiáng),通用性、可讀性、可維護(hù)性都較好
缺點(diǎn):執(zhí)行速度較慢,編制訪問(wèn)硬件資源的系統(tǒng)軟件較難。
用高級(jí)語(yǔ)言編寫的程序稱為“源程序”,計(jì)算機(jī)不能直接識(shí)別和執(zhí)行,高級(jí)語(yǔ)言程序有編譯和解釋兩種執(zhí)行方式。4高級(jí)語(yǔ)言程序的編譯執(zhí)行:
是將源程序整個(gè)編譯成等價(jià)的,獨(dú)立的目標(biāo)程序,然后通過(guò)鏈接程序?qū)⒛繕?biāo)程序鏈接成可執(zhí)行程序。高級(jí)語(yǔ)言編譯執(zhí)行過(guò)程
5高級(jí)語(yǔ)言程序的解釋執(zhí)行:
解釋方式是將源程序逐句翻譯,翻譯一句執(zhí)行一句,邊翻譯邊執(zhí)行,不產(chǎn)生目標(biāo)程序。整個(gè)執(zhí)行過(guò)程,解釋程序都一直在內(nèi)存中。高級(jí)語(yǔ)言解釋執(zhí)行過(guò)程
61.1.2程序設(shè)計(jì)方法概述程序設(shè)計(jì)方法的發(fā)展可以劃分以下三個(gè)階段:1.早期的程序設(shè)計(jì)2.結(jié)構(gòu)化程序設(shè)計(jì)3.面向?qū)ο蟮某绦蛟O(shè)計(jì)71.2
Python簡(jiǎn)介Python語(yǔ)言是一種功能強(qiáng)大的跨平臺(tái)面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是目前應(yīng)用最為廣泛的計(jì)算機(jī)語(yǔ)言之一,具有簡(jiǎn)單易學(xué)、面象對(duì)象、跨平臺(tái)、交互解釋、模塊庫(kù)豐富、應(yīng)用廣泛等特點(diǎn),擁有大量的第三方庫(kù),可以高效地開(kāi)發(fā)各種應(yīng)用程序。81.2.1Python語(yǔ)言的發(fā)展1989年荷蘭人GuidovanRossumPython2.xPython3.x91.2.2Python語(yǔ)言的特點(diǎn)(1)簡(jiǎn)單,所以易學(xué)。(2)通用編程語(yǔ)言。(3)Python是解釋型語(yǔ)言。(4)開(kāi)源,擁有眾多的開(kāi)發(fā)群體。(5)良好的跨平臺(tái)性和可移植性。(6)面向?qū)ο?。?)Python是強(qiáng)類型語(yǔ)言。(8)可擴(kuò)展性和豐富的第三方庫(kù)。101.2.3Python語(yǔ)言的應(yīng)用方向(1)常規(guī)軟件開(kāi)發(fā)(2)WEB開(kāi)發(fā)(3)科學(xué)運(yùn)算(4)數(shù)據(jù)分析(5)人工智能(6)GUI編程(7)網(wǎng)絡(luò)爬蟲(chóng)(8)云計(jì)算(9)系統(tǒng)運(yùn)維111.3Python開(kāi)發(fā)環(huán)境Python是跨平臺(tái)的,可以運(yùn)行于Windows、Mac和各種UNIX系統(tǒng)。Python開(kāi)發(fā)環(huán)境除了官方安裝包自帶的IDLE,還有Anaconda、PyCharm、Eclipse+Pydev插件、VisualStudio+PythonToolsforVisualStudio、PythonWin等。121.3.1下載Python安裝程序https://www.python.org/downloads/131.3.2安裝Python(1)雙擊python-3.7.2-amd64.exe(2)選中“AddPython3.7toPATH”復(fù)選框,將Python的可執(zhí)行文件路徑添加到Windows操作系統(tǒng)的環(huán)境變量path中,現(xiàn)在“InstallNow”開(kāi)始安裝。如圖1-4所示。(3)單擊“Close”按鈕,
完成安裝。141.3.3安裝和管理Python的第三方庫(kù)math庫(kù)、random庫(kù)、datatime等Python的標(biāo)準(zhǔn)庫(kù),用戶可以隨時(shí)使用。第三方庫(kù)(擴(kuò)展庫(kù))需要安裝后才能使用。用戶下載第三方庫(kù)后,可以根據(jù)軟件文檔來(lái)安裝或使1、用pip工具安裝。使用pip工具安裝
示例:安裝NumPy包:pyhon–mpipinstallNumPy152、可以在PyPI頁(yè)面搜索和安裝Python第三方庫(kù)(模塊)
163、Python常見(jiàn)的第三方庫(kù)171.4運(yùn)行Python程序1.4.1Python程序的運(yùn)行原理和運(yùn)行方式1.運(yùn)行原理182.運(yùn)行方式(1)交互模式。在程序功能簡(jiǎn)單、代碼較少的情況下,可以使用交互模式開(kāi)發(fā)Python程序。(2)腳本模式。具有復(fù)雜功能的Python代碼量較大,一般采用可以使用腳本模式運(yùn)行。可以使用Python自帶的開(kāi)發(fā)工具開(kāi)發(fā)Python程序,有兩種方式:(1)Windows命令行方式;(2)IDLE方式。191.4.2Windows命令行方式1.交互模式編程2.腳本模式編程201.4.3IDLE方式1.交互模式編程211.交互模式編程222.腳本模式編程(1)新建(2)編輯#lt1-5-welcome.py#第1行為注釋。以符號(hào)#開(kāi)始,到行尾結(jié)束str="歡迎來(lái)到Python世界!"print("str",str)(3)保存(4)運(yùn)行23【例1-6】運(yùn)行程序lt1-6-datas.py#lt1-10-datas.pydatas=(23,2,-32.3,3,90,2.0)print(max(datas))print(min(datas))241.5在線幫助和相關(guān)資源Python官網(wǎng):/Python擴(kuò)展庫(kù)索引:/251.5.1Python交互式幫助系統(tǒng)直接鍵入help()函數(shù)可進(jìn)入交互式幫助系統(tǒng)鍵入help(object)可獲取關(guān)于object對(duì)象的幫助信息261.5.2Python文檔選擇“開(kāi)始”→“所有程序”→Python3.7→Python3.7Manuals(64-bit),就可以打開(kāi)Python文檔。27通過(guò)本章的學(xué)習(xí),讀者應(yīng)對(duì)計(jì)算機(jī)語(yǔ)言及程序設(shè)計(jì)的概念、Python語(yǔ)言程序的組成特點(diǎn)、Python語(yǔ)言程序的運(yùn)行過(guò)程有一個(gè)初步了解。Python程序有交互方式和文件方式兩種執(zhí)行方式。典型的程序設(shè)計(jì)模式是IPO模式。28本章小結(jié)2929本章小結(jié)
程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,學(xué)習(xí)Python語(yǔ)言程序設(shè)計(jì)的一個(gè)重要環(huán)節(jié)就是要既動(dòng)手又動(dòng)腦地做實(shí)驗(yàn)。
初學(xué)程序設(shè)計(jì)的一般規(guī)律是:先模仿,在模仿的基礎(chǔ)上改進(jìn),在改進(jìn)的基礎(chǔ)上提高;做到善于思考,邊學(xué)邊練。
學(xué)習(xí)程序設(shè)計(jì)好的方法就是在掌握語(yǔ)法規(guī)則的基礎(chǔ)上,多分析閱讀別人寫的程序,多自己動(dòng)手編寫一些小程序,多上機(jī)調(diào)試運(yùn)行程序,做到這3個(gè)“多”字,學(xué)習(xí)好程序設(shè)計(jì)就不難了。
3030本章作業(yè)二、判斷題三、填空題四、選擇題五、編程題《Python程序設(shè)計(jì)》
第2章Python程序設(shè)計(jì)基礎(chǔ)3232本章學(xué)習(xí)要求:熟悉Python程序編寫方法了解Python對(duì)象和引用掌握標(biāo)識(shí)符及其命名規(guī)則掌握變量和賦值語(yǔ)句了解Python的編碼規(guī)范掌握基本輸入輸出的方法了解turtle模塊的基本用法2.1Python程序概述2.1.1引例首先,看一個(gè)例子。【例2-1】已知三角形的三條邊,求三角形的面積。提示:假設(shè)三條邊長(zhǎng)分別為a、b和c,則三角形的面積
其中x為三角形周長(zhǎng)的一半
。33程序:#lt2-1-area.pyimportmatha=3.0b=4.0c=5.0x=(a+b+c)/2
#x為三角形周長(zhǎng)的一半s=math.sqrt(x*(x-a)*(x-b)*(x-c))
#s為三角形的面積print(s)342.1.2Python程序的構(gòu)成(1)Python程序由模塊組成,模塊對(duì)應(yīng)擴(kuò)展名為.py的源文件。一個(gè)Python程序一個(gè)或多個(gè)模塊組成。例2-1程序由模塊lt2-1-area.py和內(nèi)置模塊math組成。(2)模塊由語(yǔ)句組成。在例2-1程序中,語(yǔ)句importmath是導(dǎo)入模塊語(yǔ)句,print(s)是調(diào)用函數(shù)語(yǔ)句,其余的是賦值語(yǔ)句。(3)語(yǔ)句是Python程序的過(guò)程構(gòu)造塊,用于創(chuàng)建對(duì)象、變量賦值、調(diào)用函數(shù)、控制分支、構(gòu)建循環(huán)、注釋等。語(yǔ)句包含表達(dá)式?!?”引導(dǎo)注釋語(yǔ)句。(4)表達(dá)式用于創(chuàng)建和處理對(duì)象。如表達(dá)式x*(x-a)*(x-b)*(x-c)的運(yùn)算結(jié)果為一個(gè)新的float對(duì)象。352.2Python對(duì)象和引用2.2.1Python對(duì)象概述(1)標(biāo)識(shí)(identity)用于唯一標(biāo)識(shí)一個(gè)對(duì)象,通常對(duì)應(yīng)于對(duì)象在計(jì)算機(jī)內(nèi)存中的位置。使用內(nèi)置函數(shù)id(obj)可返回對(duì)象obj的標(biāo)識(shí)(2)類型(type)用于表示對(duì)象所屬的數(shù)據(jù)類型(類),數(shù)據(jù)類型(類)用于限定對(duì)象的取值范圍,以及允許執(zhí)行的處理操作。使用內(nèi)置函數(shù)type(obj)可以返回對(duì)象obj所屬的數(shù)據(jù)類型(3)值(value)用于表示對(duì)象的數(shù)據(jù)類型的值。使用內(nèi)置函數(shù)print(obj)可返回對(duì)象obj的值36【例2-2】使用內(nèi)置函數(shù)type()、id()和print()查看對(duì)象。>>>123
#輸出:123>>>id(123)
#輸出:8791315313296>>>type(123) #輸出:<class‘int’>>>>print(123) #輸出:123372.2.2Python常用內(nèi)置對(duì)象382.2.3數(shù)據(jù)類型1.基本數(shù)據(jù)類型與復(fù)合數(shù)據(jù)類型基本數(shù)據(jù)類型也稱為簡(jiǎn)單數(shù)據(jù)類型,這些類型的數(shù)據(jù)是不能再分解的。Python中的基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、布爾類型等,這類數(shù)據(jù)具有明確的數(shù)據(jù)范圍和相應(yīng)的運(yùn)算模式(詳見(jiàn)第3章)。在這些數(shù)據(jù)類型的基礎(chǔ)上,可以創(chuàng)建其他的數(shù)據(jù)類型(又稱為復(fù)合數(shù)據(jù)類型),例如列表、元組、集合、字典等,均是由若干元素合成的(詳見(jiàn)第5章)。392.不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型不可變數(shù)據(jù)類型是不允許元素的值發(fā)生變化的,不可變數(shù)據(jù)類型包括字符串型、元組等。可變數(shù)據(jù)類型則會(huì)允許元素的值發(fā)生變化,即若對(duì)此類變量進(jìn)行像append、+、+=等修改操作,系統(tǒng)均會(huì)正常運(yùn)行??勺償?shù)據(jù)類型包括整型、浮點(diǎn)型、布爾類型、列表和字典;402.2.4變量和對(duì)象的引用Python對(duì)象是位于計(jì)算機(jī)內(nèi)存中的一個(gè)內(nèi)存數(shù)據(jù)塊。為了引用對(duì)象,必須通過(guò)賦值語(yǔ)句,把對(duì)象賦值給變量通過(guò)標(biāo)識(shí)符和賦值運(yùn)算符(=),可以指定某個(gè)變量指向某個(gè)對(duì)象,即引用該對(duì)象。>>>a=1#變量a的值為1>>>b=2#變量b的值為2>>>c=a+b412.3標(biāo)識(shí)符及其命名規(guī)則在Python語(yǔ)言中,包、模塊、類、函數(shù)、變量等的名稱等必須為有效的標(biāo)識(shí)符。422.3.1標(biāo)識(shí)符可以包含英為文字母(A-Z、a-z)、數(shù)字(0-9)及下畫(huà)線符號(hào)(_)。在自定義標(biāo)識(shí)符時(shí),有以下幾個(gè)方面的限制:(1)標(biāo)識(shí)符的第1個(gè)字符必須是字母表中的字母或下畫(huà)線(_),并且變量名稱之間不能有空格。(2)在命名時(shí),應(yīng)盡量做到見(jiàn)名知意,以提高程序的可讀性。例如,用salary和pay表示工資。(3)Python的標(biāo)識(shí)符有大小寫之分,如Data與data是不同的標(biāo)識(shí)符。(4)保留字不可以當(dāng)作標(biāo)識(shí)符。保留字也叫關(guān)鍵字,不能把它們用作任何標(biāo)識(shí)符名稱。例如:if、for、in等。(5)避免使用預(yù)定義標(biāo)識(shí)符作為自定義標(biāo)識(shí)符,例如:int、float、list、tuple等。(6)以雙下劃線開(kāi)始和結(jié)束的名稱通常具有特殊的含義。例如,__init__為類的構(gòu)造函數(shù),一般應(yīng)避免使用。432.3.2保留關(guān)鍵字使用Python的help()內(nèi)置函數(shù)可以查看內(nèi)置函數(shù),如help(input)。442.3.3Python預(yù)定義標(biāo)識(shí)符Python語(yǔ)言包含許多內(nèi)置的類名、對(duì)象名、異常名、函數(shù)名、方法名、模塊名、包名等的預(yù)定義名稱,例如,float、math、ArithmeticError、print等。用戶應(yīng)該避免使用Python預(yù)定義標(biāo)識(shí)符名作為自定義標(biāo)識(shí)符名提示:使用Python的內(nèi)置函數(shù)dir(__builtins__),可以查看所有內(nèi)置的異常名、函數(shù)名等452.3.4命名規(guī)則使用統(tǒng)一的標(biāo)識(shí)符命名規(guī)則,例如使用著名的SmallTalk法則。在命名時(shí),應(yīng)盡量做到見(jiàn)名知意,以提高程序的可讀性。例如,用salary和pay表示工資是比較合理的。462.4變量和賦值語(yǔ)句變量(Variable)是用來(lái)標(biāo)識(shí)對(duì)象或引用對(duì)象的。1.變量的聲明和賦值在Python解釋器內(nèi)可以直接聲明變量的名稱,不必聲明變量的類型,Python會(huì)自動(dòng)判別變量的類型。例如,聲明一個(gè)變量x,其值為100:
>>>x=100>>>x100472.鏈?zhǔn)劫x值語(yǔ)句鏈?zhǔn)劫x值用于為多個(gè)變量賦值同一個(gè)值【例2-3】鏈?zhǔn)劫x值語(yǔ)句示例Python允許用戶同時(shí)為多個(gè)變量賦值。例如:>>>a=b=c=100 #三個(gè)變量的值都為100>>>print(a,b,c)100100100483.復(fù)合賦值語(yǔ)句在賦值符“=”之前加上其他雙目運(yùn)算符可構(gòu)成復(fù)合賦值符。如:+=、-=、*=、/=、%=、**=、//=。復(fù)合賦值符優(yōu)先級(jí)、結(jié)合性與賦值符相同。構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:
變量
雙目運(yùn)算符=表達(dá)式
例如,a+=5 等價(jià)于a=a+5x*=y+7 等價(jià)于x=x*(y+7)而不等價(jià)于:x=x*y+7r%=p 等價(jià)于r=r%p494.系列解包賦值將系列數(shù)據(jù)類型解包為對(duì)應(yīng)相同個(gè)數(shù)的變量a,b,c=1,2,"john"
#分別為三個(gè)變量賦值【例2-4】使用系列解包實(shí)現(xiàn)變量交換>>>a,b=(1,2)#變量a,b>>>a,b=b,a #a,b交換>>>a #輸出:2>>>b #輸出:1502.3.2常量Python常量包括數(shù)字、字符串、布爾值、空值,例如:20193.14“ZUST”TRUE通常使用全大寫字母(可以使用下劃線增加可閱讀性)表示常量名。在編程過(guò)程中,經(jīng)常將一些關(guān)鍵的數(shù)據(jù)設(shè)置成常量,這樣做可以提高程序的可讀性,而且對(duì)程序設(shè)計(jì)的擴(kuò)充與修改也是十分方便的。512.5表達(dá)式和運(yùn)算符2.5.1表達(dá)式的組成表達(dá)式由操作數(shù)和運(yùn)算符組成,操作數(shù)、運(yùn)算符和圓括號(hào)按一定規(guī)則組成表達(dá)式。【例2-5】表達(dá)式示例>>>importmath>>>a=2
;b=3>>>a+b>>>math.pimath.sin(math.pi/2)522.4.2表達(dá)式的書(shū)寫規(guī)則表達(dá)式從左到右書(shū)寫。例如,數(shù)學(xué)公式a2+b2應(yīng)該寫為:a**2+b**2。②乘號(hào)不能省略,例如,數(shù)學(xué)公式ab(表示a乘以b)應(yīng)寫為:a*b。③圓括號(hào)可用于修改表達(dá)式計(jì)算順序或者增加代碼可讀性避免歧義。圓括號(hào)必須成對(duì)出現(xiàn),可以嵌套使用。例如,并聯(lián)電阻的計(jì)算公式
對(duì)應(yīng)的表達(dá)式是R1*R2/(R1+R2)。532.4.3運(yùn)算符運(yùn)算符包括算術(shù)運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、成員運(yùn)算符和身份運(yùn)算符。提示:在第3章作詳細(xì)介紹。注意:Python運(yùn)算符及其優(yōu)先級(jí)。542.6語(yǔ)句2.6.1Python語(yǔ)句語(yǔ)句是Python程序的過(guò)程構(gòu)造塊,用于定義函數(shù)、定義類、創(chuàng)建對(duì)象、變量賦值、調(diào)用函數(shù)、控制分支、創(chuàng)建循環(huán)等Python語(yǔ)句分為:(1)簡(jiǎn)單語(yǔ)句包括:表達(dá)式語(yǔ)句、賦值語(yǔ)句、assert語(yǔ)句、pass空語(yǔ)句、del語(yǔ)句、return語(yǔ)句、yield語(yǔ)句、raise語(yǔ)句、break語(yǔ)句、continue語(yǔ)句、import語(yǔ)句、global語(yǔ)句、nonlocal語(yǔ)句等(2)復(fù)合語(yǔ)句包括:if語(yǔ)句、while語(yǔ)句、for語(yǔ)句、try語(yǔ)句、with語(yǔ)句、函數(shù)定義、類定義等552.6.2Python語(yǔ)句的書(shū)寫規(guī)則(1)Python中的縮進(jìn)要求非常嚴(yán)格,必須嚴(yán)格對(duì)齊。因?yàn)镻ython的代碼塊不由{}控制,而是由縮進(jìn)就可以控制。復(fù)合語(yǔ)句構(gòu)造體必須縮進(jìn)。(2)使用換行符分隔,一般情況下,一行一條語(yǔ)句。(3)反斜杠(\)用于一個(gè)代碼跨越多行的情況。如果語(yǔ)句確實(shí)太長(zhǎng)而超過(guò)屏幕寬度,最好在行尾使用續(xù)行符“\”表示下一行代碼仍屬于本條語(yǔ)句,或者使用圓括號(hào)把多行代碼括起來(lái)表示是一條語(yǔ)句。(4)分號(hào)(;)用于在一行書(shū)寫多條語(yǔ)句。(5)適當(dāng)使用空行分隔語(yǔ)句塊、函數(shù)、類、模塊等對(duì)象。562.6.3復(fù)合語(yǔ)句復(fù)合語(yǔ)句(條件語(yǔ)句、循環(huán)語(yǔ)句、函數(shù)定義和類定義,例如if、for、while、def、class等)由頭部語(yǔ)句(headerline)和構(gòu)造體語(yǔ)句塊(suites)組成。復(fù)合語(yǔ)句及其縮進(jìn)書(shū)寫規(guī)則:(1)頭部語(yǔ)句由相應(yīng)的關(guān)鍵字(例如,if)開(kāi)始,構(gòu)造體語(yǔ)句塊則為下一行開(kāi)始的一行或多行縮進(jìn)代碼。(2)通??s進(jìn)是相對(duì)頭部語(yǔ)句縮進(jìn)四個(gè)空格,也可以是任意空格,但同一構(gòu)造體代碼塊的多條語(yǔ)句縮進(jìn)的空格數(shù)必須一致對(duì)齊。如果語(yǔ)句不縮進(jìn),或縮進(jìn)不一致,將導(dǎo)致編譯錯(cuò)誤。(3)如果條件語(yǔ)句、循環(huán)語(yǔ)句、函數(shù)定義和類定義比較短,可以放在同一行。572.6.4注釋語(yǔ)句Python中的注釋有單行注釋和多行注釋。單行注釋以#開(kāi)頭,,到行末結(jié)束。多行注釋用3個(gè)單引號(hào)(''')或3個(gè)雙引號(hào)(""")將注釋括起來(lái)。Python解釋器將忽略所有的注釋語(yǔ)句,注釋語(yǔ)句不會(huì)影響程序的執(zhí)行結(jié)果。582.7輸入輸出函數(shù)程序運(yùn)行時(shí)序通常都是輸入數(shù)據(jù)、進(jìn)行計(jì)算和輸出結(jié)果,這就是簡(jiǎn)單程序的形式。Python的內(nèi)置函數(shù)input()和print()用于輸入和輸出數(shù)據(jù)。592.7.1輸出函數(shù)print()1.使用print()函數(shù)輸出print()函數(shù)的基本語(yǔ)法格式如下:print(value,…,sep='',end='\n')示例:>>>print(123,'abc',45,'book',sep='-')123-abc-45-book>>>print('100+200=',100+200)100+200=300602.使用格式符%對(duì)字符串格式化print()函數(shù)格式化輸出的一般格式:print(”格式化字符串”%(變量、常量或表達(dá)式))其中,格式化字符串中包含一個(gè)或多個(gè)指定格式參數(shù),與后面括號(hào)中的變量、常量或表達(dá)式在個(gè)數(shù)和類型上一一對(duì)應(yīng)。
當(dāng)有多個(gè)變量、常量或表達(dá)式時(shí),中間用逗號(hào)隔開(kāi)。61print()函數(shù)格式符合及含義62【例2-6】使用print()函數(shù)格式化輸出數(shù)據(jù)。程序代碼及運(yùn)行結(jié)果。>>>print('100+200=%d'%(100+200))100+200=300>>>x=100>>>y=1.23>>>print("x=%d,y=%f"%(x,y)x=100,y=1.23632.7.2輸入函數(shù)input()Python提供的input()函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤。input()函數(shù)的基本語(yǔ)法格式如下:變量=input([prompt])【例2-7】測(cè)試鍵盤的輸入。>>>x=input("請(qǐng)輸入最喜歡的水果:")請(qǐng)輸入最喜歡的水果:葡萄>>>x'葡萄'64【例2-8】計(jì)算矩形面積。源程序如下:#lt2-8-area.pya=int(input("矩形長(zhǎng)度:\t"))#輸入矩形長(zhǎng)度b=int(input("矩形寬度:\t"))#輸入矩形寬度area=a*b#計(jì)算矩形面積print("矩形面積:\t",area)#輸出結(jié)果652.7.3eval()函數(shù)eval()函數(shù)可以接收一個(gè)字符串,以Python表達(dá)式的方式解析與執(zhí)行該字符串,并將執(zhí)行結(jié)果返回。該函數(shù)的語(yǔ)法格式為:eval(<字符串>)【例2-9】輸入三角形三條邊,用海倫公式計(jì)算三角形的面積。#lt2-9-area.py#輸入三角形三條邊,有海倫公式計(jì)算三角形面積simportmatha=eval(input("請(qǐng)輸入a邊長(zhǎng):"))b=eval(input("請(qǐng)輸入b邊長(zhǎng):"))c=eval(input("請(qǐng)輸入c邊長(zhǎng):"))p=(a+b+c)/2s=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形的面積是{:.2f}".format(s))662.8Python中的函數(shù)和模塊函數(shù)是可以重復(fù)調(diào)用的代碼塊。Python語(yǔ)言中包括許多內(nèi)置的函數(shù),例如print()、max()等,用戶也可以自定義函數(shù)。有關(guān)自定義函數(shù)請(qǐng)參見(jiàn)第6章。672.8.1函數(shù)1.內(nèi)置函數(shù)Python語(yǔ)言中包含若干常用的內(nèi)置函數(shù),如dir()、type()、id()、help()、len()等,用戶可以直接使用。示例:>>>s="WelcometoHangzhou!">>>len(s)#返回字符串s的長(zhǎng)度,輸出:2020>>>round(5.79)6
提示:可以用dir(__builtins__)命令查看Python的全部?jī)?nèi)置函數(shù)。682.模塊函數(shù)通過(guò)import語(yǔ)句,可以導(dǎo)入模塊module,然后使用module.function(arguments)的形式調(diào)用模塊中的函數(shù)3.函數(shù)APIPython語(yǔ)言提供了海量的內(nèi)置函數(shù)、標(biāo)準(zhǔn)庫(kù)函數(shù)、第三方模塊函數(shù),函數(shù)的調(diào)用方法由應(yīng)用程序編程接口(API)確定。69Python常用函數(shù)API702.8.2模塊模塊是包含變量、語(yǔ)句、函數(shù)或類的定義的程序文件,文件的名字就是模塊名加上.py擴(kuò)展名。功能相近的模塊可以組織成包,包是模塊的層次性組織結(jié)構(gòu)。Python中使用import導(dǎo)入模塊或模塊對(duì)象,有以下幾種方式。(1)導(dǎo)入整個(gè)模塊。格式為:import模塊名[as別名]。(2)導(dǎo)入模塊的單個(gè)對(duì)象。格式為:from模塊名import對(duì)象[as別名]。
(3)導(dǎo)入模塊的多個(gè)對(duì)象。格式為:from模塊名import對(duì)象1,對(duì)象2,…。(4)導(dǎo)入模塊的全部對(duì)象。格式為:from模塊名import*。
說(shuō)明:這幾種方式導(dǎo)入模塊后,使用模塊中對(duì)象的形式有所不同。71【例2-10】模塊的導(dǎo)入及使用。程序代碼及運(yùn)行結(jié)果:>>>importmath #math是Python內(nèi)置模塊>>>math.fmod(10,3) #求余數(shù)1.0>>>importmath asm #別名為m>>>m.pow(2,4 )16.0>>>frommathimportfabs,sqrt #導(dǎo)入模塊中的函數(shù)>>>fabs(-100)100.0>>>sqrt(9) #返回3.072【例2-11】模塊和包示例:求解一元二次方程ax2+bx+c=0。源程序如下:#lt2-11-module.pyimportmath#導(dǎo)入標(biāo)準(zhǔn)看模塊matha=float(input("請(qǐng)輸入a:"))b=float(input("請(qǐng)輸入b:"))c=float(input("請(qǐng)輸入c:"))#a=3;b=8;c=5x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)#使用模塊math中的函數(shù)sqrt求解平方根x2=(-b-math.sqrt(b*b-4*a*c))/(2*a)print('方程a*x*x+b*x+c=0的解為:',x1,x2)732.9turtle繪圖turtle(海龜)庫(kù)是Python語(yǔ)言中一個(gè)很流行的繪制圖形的函數(shù)庫(kù),用于繪制線、圓及其他形狀。turtle繪圖可以描述為海龜爬行軌跡形成了繪制的圖形,圖形繪制的過(guò)程十分直觀。turtle庫(kù)保存在Python安裝目錄的Lib文件夾下,需要導(dǎo)入后才能使用。742.9.1turtle簡(jiǎn)介海龜有三個(gè)屬性,位置、方向、畫(huà)筆(顏色、寬度等)。(1)位置屬性:整個(gè)畫(huà)板其實(shí)就對(duì)應(yīng)一個(gè)中學(xué)所學(xué)的“平面直角坐標(biāo)系”,畫(huà)板的正中心為坐標(biāo)系的原點(diǎn)(0,0)即x=0,y=0。在turtle里,reset(),海龜回到原點(diǎn)坐標(biāo)。(2)方向?qū)傩裕汉}斂梢?60度的旋轉(zhuǎn),使用的函數(shù)為:left(angle),right(angle),分別為向左、向右轉(zhuǎn)angle度。(3)畫(huà)筆屬性:通過(guò)改變畫(huà)筆的屬性,海龜可以畫(huà)出不同顏色,不同粗細(xì)的圖案。這些函數(shù)包括,pencolor(args),可以改變畫(huà)筆的顏色,args可以是'red','blue'等字符串;width(w),可以改變畫(huà)筆的粗細(xì),w為一個(gè)正數(shù)。up(),即提起畫(huà)筆,暫時(shí)不畫(huà)圖像,對(duì)應(yīng)的down()為放下畫(huà)筆,開(kāi)始繪圖。751.創(chuàng)建窗口圖形窗口也稱為畫(huà)布(canas)。
需要先使用setp()函數(shù)創(chuàng)建圖形窗口。turtle.setup(width,height,startx,starty)setup()函數(shù)中的4個(gè)參數(shù)表示窗口寬度、高度、窗口在計(jì)算機(jī)屏幕上的橫坐標(biāo)和的縱坐標(biāo)。762.turtle的畫(huà)筆控制方法設(shè)置畫(huà)筆的狀態(tài),包括畫(huà)筆的抬起和落下?tīng)顟B(tài);設(shè)置畫(huà)筆的寬度、顏色等。773.turtle的圖形繪制方法turle圖形繪制是通過(guò)控制畫(huà)筆的行進(jìn)動(dòng)作完成的,包括畫(huà)筆的前進(jìn)方法、后退方法、方向控制等。782.9.2turtle繪圖實(shí)例【例2-12】用坐標(biāo)繪制圖2-1所示的五角星。79繪圖程序如下:
#lt2-12-star.pyimportturtle#導(dǎo)入模塊turtle中的全部?jī)?nèi)容turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.done()80【例2-13】繪制同一個(gè)半徑的內(nèi)接正多邊形81#繪制同一個(gè)半徑的內(nèi)接正多邊形
importturtleimporttime#sleep()函數(shù)需要turtle.setup(640,480)turtle.title("繪制同一個(gè)半徑的內(nèi)接正多邊形")t=turtle.Turtle()t.pensize(3)#設(shè)置畫(huà)筆寬度為3t.pencolor('blue')#設(shè)置畫(huà)筆顏色為藍(lán)色t.penup()#抬起畫(huà)筆t.goto(-270,0)#移動(dòng)位置t.pendown()#放下畫(huà)筆foriinrange(3,9):#循環(huán)6次,i值依次去3~8t.circle(40,steps=i)#circle()函數(shù)可繪制正i邊形,i>=3time.sleep(1)#暫停1s,需引入time模塊t.penup()t.goto(-290+(i-2)*90,0)t.pendown()t.circle(40)#繪制1個(gè)圓t.hideturtle()#隱藏畫(huà)筆turtle.mainloop()822.10.實(shí)例應(yīng)用【例2-14】列表保存的一組成績(jī)數(shù)據(jù),統(tǒng)計(jì)不及格的人數(shù)和最高分。具體程序如下。#lt2-13-max.pylst=[89,45,34,23,98,33]#列表表示notpass=maxscore=0#notpass為不及格人數(shù),maxscore為最高分foriteminlst:ifmaxscore<item:maxscore=itemifitem<60:notpass+=1print("最高分是{},不及數(shù)人數(shù)是{}".format(maxscore,notpass))83【例2-15】求2個(gè)數(shù)平方和的平方根。程序設(shè)計(jì)如下:
#lt2-14-sqrt.pyimportmath
#導(dǎo)入模塊.deffunc(x,y):#定義函數(shù).z=math.sqrt(x**2+y**2)returnzif__name__=="__main__":a=int(input("請(qǐng)輸入一個(gè)整數(shù):"))
#定義變量a.b=int(input("請(qǐng)輸入一個(gè)整數(shù):"))
#定義變量b.c=func(a,b#調(diào)用func()函數(shù),結(jié)果賦給變量c.print("c=",c)#輸出.848585本章小結(jié)本章學(xué)習(xí)的Python對(duì)象和引用、標(biāo)識(shí)符、變量和賦值語(yǔ)句、表達(dá)式和運(yùn)算符、輸入輸出函數(shù)、Python中的庫(kù)是Python語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)。程序的書(shū)寫,包括代碼縮進(jìn)、注釋、語(yǔ)句續(xù)行、關(guān)鍵字區(qū)分大小寫等內(nèi)容。8686本章作業(yè)一、判斷題二、填空題三、選擇題四、程序閱讀題五、編程題《Python程序設(shè)計(jì)》
第3章基本數(shù)據(jù)類型與表達(dá)式
本章學(xué)習(xí)要求
掌握三種數(shù)值及布爾類型的概念正確使用三種數(shù)值類型掌握字符串的概念和表示熟悉基本的運(yùn)算符結(jié)合標(biāo)準(zhǔn)函數(shù)進(jìn)行表達(dá)式計(jì)算掌握字符串的基本操作和格式化輸出883.1數(shù)據(jù)和數(shù)據(jù)類型的概念計(jì)算機(jī)的數(shù)據(jù)表示分成數(shù)值類、文本類、復(fù)合類數(shù)據(jù)類型程序處理的處理的對(duì)象不同,需要區(qū)分?jǐn)?shù)據(jù)類型各類數(shù)據(jù)的存儲(chǔ)方式以及運(yùn)算方式不同每種數(shù)據(jù)有特定的保留字89數(shù)值類型整數(shù)類型int十進(jìn)制:100,-23二進(jìn)制:0B1101八進(jìn)制:0o1354十六進(jìn)制:0x9A8B浮點(diǎn)數(shù)類型float-123.65、9.2e-3復(fù)數(shù)類型complex3.5+2.78j90字符串類型str91以一對(duì)單引號(hào)、雙引號(hào)或三引號(hào)作為定界符的字符序列;它最基本的單位就是字符(分可打印和不可打印字符);打印字符包括:英文的大小寫字母A~Z和a~z;數(shù)字字符0~9;標(biāo)點(diǎn)符號(hào)和一些常用符號(hào)。92轉(zhuǎn)義字符(用“\”開(kāi)始)轉(zhuǎn)義字符描述轉(zhuǎn)義字符描述\\反斜杠符號(hào)\t橫向制表符\’單引號(hào)\n換行\(zhòng)”雙引號(hào)\(在行尾)續(xù)行符\a響鈴\f換頁(yè)\b退格\oyy八進(jìn)制數(shù)\r回車\xyy十六進(jìn)制數(shù)布爾類型bool只有True(真)和False(假)兩個(gè)值所有類型的數(shù)字0(整數(shù)類型、浮點(diǎn)類型等其它類型)、空序列(字符串、列表、元組)以及空字典的值為假,其它值為真。93s=bool("Helloworld")t=bool(0)print(s)print(t)
TrueFalse943.3運(yùn)算符與表達(dá)式對(duì)數(shù)據(jù)進(jìn)行不同運(yùn)算處理時(shí)運(yùn)用的一些符號(hào),叫運(yùn)算符。根據(jù)參與運(yùn)算對(duì)象的數(shù)目,可以分為一元運(yùn)算符、二元運(yùn)算符。Python常用的運(yùn)算符包括
①算術(shù)運(yùn)算符
②關(guān)系運(yùn)算符
③邏輯運(yùn)算符
④賦值運(yùn)算符
⑤位運(yùn)算符
⑥成員運(yùn)算符
⑦身份運(yùn)算符
95用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象組合在一起的式子就是表達(dá)式。單獨(dú)的一個(gè)常量或變量都可以視為一個(gè)表達(dá)式。表達(dá)式的運(yùn)算結(jié)果跟所參與的運(yùn)算、運(yùn)算的目數(shù)和運(yùn)算的優(yōu)先級(jí)有關(guān)。3.3運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符(假設(shè)變量a取值2,變量b取值5)96運(yùn)算符描述舉例-a取反-2a+b相加結(jié)果為7a-b相減結(jié)果為-3a*b相乘結(jié)果為10a/b相除結(jié)果為0.4a//b整除結(jié)果為0a%b取余結(jié)果為2a**b求冪結(jié)果為32關(guān)系運(yùn)算符關(guān)系運(yùn)算符是進(jìn)行兩個(gè)對(duì)象大小于或相等與否關(guān)系比較的運(yùn)算符,關(guān)系成立的運(yùn)算結(jié)果為真,反之為假,運(yùn)算的值是布爾類型數(shù)據(jù):True或False。97運(yùn)算符描述舉例a>b比較a是否大于ba大于b,返回True,否則返回Falsea>=b比較a是否大于等于ba大于等于b,返回True,否則返回Falsea<b比較a是否小于ba小于b,返回True,否則返回Falsea<=b比較a是否小于等于ba小于等于b,返回True,否則返回Falsea==b比較a是否等于ba等于b,返回True,否則返回Falsea!=b比較a是否不等于ba不等于b,返回True,否則返回False邏輯運(yùn)算符運(yùn)算包括:邏輯非not、邏輯與and和邏輯或or運(yùn)算邏輯運(yùn)算的結(jié)果也只有True和False兩個(gè)值。98abaandbaorbnotaTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrueTrueTrueTrueTrueFalse賦值運(yùn)算符用一個(gè)“=”表示表示將右邊表達(dá)式的結(jié)果賦予左邊的變量可以一次只給一個(gè)變量賦值,也可以同時(shí)給多個(gè)變量賦值99>>>x=100#一次賦值一個(gè)變量>>>x,y,z=100,200,300#一次賦值多個(gè)變量>>>x,y=y,x#x,y兩個(gè)數(shù)值互換位運(yùn)算符是針對(duì)二進(jìn)制數(shù)按每一位進(jìn)行運(yùn)算的符號(hào)100按位取反(~)按位與(&)
56 00111000 78 & 01001110 00001000位運(yùn)算符101按位或(|)
56 00111000 78 | 01001110 01111110按位異或(^)
56 00111000 78 ^ 01001110 01110110位運(yùn)算符102按位左移(<<) 5<<4
01010000按位右移(>>) 5>>2
00000001
身份運(yùn)算符103運(yùn)算符描述舉例aisb判斷a和b是否引自同一個(gè)對(duì)象如果id(a)和id(b)一致,返回Trueanotisb判斷a和b是否引自不同對(duì)象如果id(a)和id(b)不同,返回True>>>x=10>>>y=10>>>print(xisy)>>>y=20>>>print(xisy)TrueFalse類型轉(zhuǎn)換104自動(dòng)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換函數(shù)描述函數(shù)描述int(x)將x強(qiáng)制轉(zhuǎn)化成整數(shù)ord(x)將x轉(zhuǎn)化成對(duì)應(yīng)的ASCⅡ值float(x)將x強(qiáng)制轉(zhuǎn)化成浮點(diǎn)數(shù)chr(x)將x轉(zhuǎn)化成對(duì)應(yīng)的字符str(x)將x強(qiáng)制轉(zhuǎn)化成字符串eval(x)將字符串x作為表達(dá)式計(jì)算運(yùn)算符優(yōu)先級(jí)105運(yùn)算符描述**冪運(yùn)算~、+、-按位取反、正、負(fù)號(hào)*、/、%、//乘、除、取余、整除+、-加、減法>>、<<右移、左移&位與^、|異或、位或<=、<、>=、>大小于比較==、!=是否相等判斷=賦值is、notis身份運(yùn)算in、notin成員運(yùn)算not、and、or邏輯運(yùn)算3.4數(shù)值處理常用標(biāo)準(zhǔn)函數(shù)106math庫(kù)的使用調(diào)用格式:先引入math庫(kù): importmath再調(diào)用: math.函數(shù)名(參數(shù))常用算術(shù)運(yùn)算標(biāo)準(zhǔn)函數(shù)107函數(shù)名或常數(shù)描述舉例math.e自然常數(shù)emath.emath.pi圓周率πmath.pimath.log10(x)返回以10為底的對(duì)數(shù)math.log10(2)math.pow(x,y)返回x的y次方math.pow(4,3)math.sqrt(x)返回x的平方根math.sqrt(5)math.ceil(x)返回不小于x的最小整數(shù)math.ceil(4.3)math.floor(x)返回不大于x的最大整數(shù)math.floor(5.8)math.trunc(x)返回x的整數(shù)部分math.trunc(7.6)math.fabs(x)返回x的絕對(duì)值math.fabs(-4.3)math.sin(x)返回x的三角正弦值math.sin(3)math.asinx)返回x的反三角正弦值math.asin(0.5)math.cos(x)返回x的三角余弦值math.cos(1.7)math.acos(x)返回x的反三角余弦值math.acos(0.3)math.tan(x)返回x的三角正切值math.tan(5)math.atan(x)返回x的反三角正切值math.atan(1.6)例3-14108importmathprint(math.pi)print(math.sqrt(2))print(math.acos(0.6))print(math.pow(3,4))print(math.floor(7.4))3.1415926535897931.41421356237309510.927295218001612381.07109random庫(kù)的使用調(diào)用格式:先引入random庫(kù): importrandom再調(diào)用: random.函數(shù)名(參數(shù))或者直接調(diào)用指定函數(shù): fromrandomimportrandint常用隨機(jī)標(biāo)準(zhǔn)函數(shù)110函數(shù)名描述seed(a)初始化隨機(jī)數(shù)種子random()生成一個(gè)[0.0,1.0]之間的隨機(jī)小數(shù)randint(a,b)生成一個(gè)[a,b]之間的整數(shù)getrandbits(k)生成一個(gè)k比特長(zhǎng)度的隨機(jī)整數(shù)randrange(start,stop[,step])生成一個(gè)[start,stop]之間以step為步長(zhǎng)的隨機(jī)整數(shù)uniform(a,b)生成一個(gè)[a,b]之間的隨機(jī)小數(shù)choice(seq)從序列seq中隨機(jī)返回一個(gè)元素shuffle(seq)將序列seq中的元素隨機(jī)打亂,返回打亂后的序列111例3-15importrandomrandom.seed(15)foriinrange(1,11):print(random.randint(1,100),end=",")print()foriinrange(1,11):print(random.randint(1,100),end=",")print()random.seed(15)foriinrange(1,11):print(random.randint(1,100),end=",")print()print(random.random())foriinrange(1,11):print(random.randrange(1,100,2),end=",")結(jié)果:27,2,67,95,5,21,31,3,8,88,19,89,48,31,15,44,60,91,46,36,27,2,67,95,5,21,31,3,8,88,0.1472483564715264589,47,31,15,43,59,91,45,35,51,3.5字符串處理函數(shù)及方法112字符串的基本操作操作符描述x+y連接字符串x和yx*n將字符串x復(fù)制n次xins若字符串x是字符串s的子串,返回True,否則返回Falsestr[i]索引,返回字符串str中第i個(gè)字符str[m:n]切片,返回字符串str中第m個(gè)到第n-1個(gè)字符的子串113字符串的常用內(nèi)置處理函數(shù)
函數(shù)名/方法描述字符串類型判斷str.isalpha()判斷字符串str是否全為字母,是返回True,否返回Falsestr.isdigit()判斷字符串str是否全為數(shù)字,是返回True,否返回Falsestr.islower()判斷字符串str是否全為小寫字母,是返回True,否返回Falsestr.isupperr()判斷字符串str是否全為大寫字母,是返回True,否返回False大小寫字母轉(zhuǎn)換換str.lower()字符串str變小寫字母str.upper()字符串str變大寫字母str.title()字符串str首字母變大寫字母str.swapcase()字符串str中的大小寫字母互換刪除空格str.strip([chars])刪除字符串str左右的空格str.lstrip(([chars])刪除字符串str左邊的空格str.rstrip(([chars])刪除字符串str右邊的空格
str.find(sub[,start[,end]])在字符串str的[start,end]區(qū)間中查找sub子串,返回sub首次出現(xiàn)的位置
str.replace(old,new[,count])在字符串str中用new子串替換old子串
str.split()將字符串str拆分成列表
str.count(sub[,start[,end]])統(tǒng)計(jì)sub子串在字符串str的[start,end]區(qū)間出現(xiàn)的次數(shù)114例3-16s="s2345dgfd645"print(s.isdigit())print(s.title())print(s.upper())print(s.strip())print(s.find('45',1,9))print(s.count('45'))print(s.split())執(zhí)行結(jié)果:FalseS2345DGfd645S2345DGFD645s2345dgfd64572['s2','345d','gfd645']115字符串的f-string格式化方法f-string在形式上是以f或F修飾符引領(lǐng)的字符串(f'xxx'或F'xxx'),以大括號(hào){}標(biāo)明被替換的字段。例如:s="zhangsan"print(f'Mynameis{s}.')顯示結(jié)果:Mynameiszhangsan.116字符串的format()格式化方法format()方法的基本格式: <模板字符串>.format(參數(shù))
name="zhangsan"age=10print('Mynameis{}.Myageis{}.'.format(name,age))0011顯示:Mynameiszhangsan.Myageis10.117format()方法的格式控制{<參數(shù)序號(hào)>
:<格式控制符>}:<填充><對(duì)齊><寬度><,><.精度><類型>引導(dǎo)符單個(gè)字符<左對(duì)齊>右對(duì)齊^居中對(duì)齊設(shè)定輸出寬度數(shù)字的千位分隔符用于整數(shù)和浮點(diǎn)數(shù)浮點(diǎn)數(shù)小數(shù)部分的精度或字符串的輸出長(zhǎng)度整數(shù)類:b,c,d,o,x,X浮點(diǎn)類:e,E,f,%<填充>部分的字符是指當(dāng)輸出值不到設(shè)定的寬度時(shí)填充空位的字符,若沒(méi)有指定,默認(rèn)由空格填充空位。<對(duì)齊>輸出值可以設(shè)定靠左、靠右和居中三種不同對(duì)齊方式。<寬度>對(duì)輸出值可以指定顯示的寬度,實(shí)際數(shù)值不到指定寬度時(shí)將出現(xiàn)空位,根據(jù)設(shè)定的對(duì)齊方式,空位出現(xiàn)的位置將會(huì)不同:左對(duì)齊方式:空位出現(xiàn)在數(shù)值的右側(cè);右對(duì)齊方式:空位出現(xiàn)在數(shù)值的左側(cè);居中對(duì)齊方式:空位出現(xiàn)在數(shù)值的兩側(cè)。<.精度>浮點(diǎn)數(shù)輸出時(shí)可以進(jìn)行小數(shù)點(diǎn)后保留幾位的控制,系統(tǒng)會(huì)自動(dòng)截取小數(shù)部分。<類型>當(dāng)輸出整數(shù)或浮點(diǎn)數(shù)時(shí),根據(jù)需要可以有不同進(jìn)制的選擇,由不同的格式控制符決定。118name="shen"a=12345.2356print('{:-<10},{:>10,.2f}'.format(name,a))結(jié)果:shen------,12,345.24《Python程序設(shè)計(jì)》
第4章程序的基本控制結(jié)構(gòu)
本章學(xué)習(xí)要求
了解算法的概念以及算法的流程圖表示掌握順序結(jié)構(gòu)掌握選擇結(jié)構(gòu),能針對(duì)不同情況選擇不同的分支語(yǔ)句處理問(wèn)題掌握循環(huán)結(jié)構(gòu),熟練使用while和for語(yǔ)句能區(qū)分break、continue語(yǔ)句的不同,在編程中正確使用優(yōu)化設(shè)計(jì)方案1204.1算法及算法表示描述程序解決問(wèn)題的方法步驟就是算法算法的特征有窮性:算法必須在執(zhí)行有限步驟后終止確定性:算法給出的每個(gè)計(jì)算步驟必須有明確定義,無(wú)二義性有效性:算法中的每個(gè)步驟都能有效執(zhí)行,得到確定結(jié)果有零個(gè)或多個(gè)輸入:算法處理的數(shù)據(jù)可以源于輸入的數(shù)據(jù)有一個(gè)或多個(gè)輸出:算法應(yīng)有輸出,執(zhí)行結(jié)果就是算法的輸出1214.1算法及算法表示評(píng)價(jià)算法優(yōu)劣標(biāo)準(zhǔn)正確性:指算法能否正確求解相應(yīng)的問(wèn)題時(shí)間復(fù)雜度:指計(jì)算機(jī)執(zhí)行程序時(shí)花費(fèi)的時(shí)間量空間復(fù)雜度:指計(jì)算機(jī)上運(yùn)行程序需要消耗內(nèi)存的大小可理解度:指算法是否便于人們閱讀、理解122算法的表示流程圖是算法表示常用的方法。它用一些圖形框圖、流程線和簡(jiǎn)單的文字說(shuō)明描述程序的基本操作和算法實(shí)現(xiàn)過(guò)程。常用的流程圖符號(hào):
起止框:表示程序的開(kāi)始和結(jié)束;
處理框:表示程序的處理步驟;
判斷框:根據(jù)不同的判斷結(jié)果執(zhí)行不同的操作;
輸入輸出框:表示數(shù)據(jù)的輸入輸出;
流程線:表示程序執(zhí)行路徑。1234.2順序結(jié)構(gòu)124順序結(jié)構(gòu)就是按照從上往下的順序依次執(zhí)行程序中的語(yǔ)句?!纠?-1】輸入半徑值計(jì)算對(duì)應(yīng)的圓面積125importmathr=float(input("請(qǐng)輸入半徑:"))s=math.pi*r*rprint("s={:.2f}".format(s))執(zhí)行結(jié)果:請(qǐng)輸入半徑:3s=28.274.3選擇結(jié)構(gòu)126指通過(guò)判斷特定條件是否滿足來(lái)決定程序的執(zhí)行流程分成單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)和多分枝選擇結(jié)構(gòu)三種基本結(jié)構(gòu)單分支選擇結(jié)構(gòu)
是選擇結(jié)構(gòu)中較簡(jiǎn)單的一種判斷執(zhí)行127格式如下: if
條件:
語(yǔ)句塊當(dāng)條件滿足時(shí),執(zhí)行語(yǔ)句塊;若條件不滿足,語(yǔ)句塊被跳過(guò)不執(zhí)行【例4-2】128x=input('請(qǐng)輸入兩個(gè)數(shù)字a,b:')a,b=map(int,x.split())ifa>=b:print('{}比較大'.format(a))執(zhí)行結(jié)果:輸入7812輸出:78比較大雙分支選擇結(jié)構(gòu)
是用來(lái)處理滿足條件與否的兩種截然不同的執(zhí)行129格式如下:
if條件:
語(yǔ)句塊1 else:
語(yǔ)句塊2表示條件滿足時(shí),執(zhí)行語(yǔ)句塊1;條件不滿足時(shí),執(zhí)行語(yǔ)句塊2【例4-3】130x=input('請(qǐng)輸入兩個(gè)數(shù)字a,b:')a,b=map(int,x.split())ifa>=b:max=aelse:max=bprint('{}比較大'.format(max))執(zhí)行結(jié)果:輸入1278輸出:78比較大條件表達(dá)式條件表達(dá)式格式如下:
值1if條件else值2131例4-3的雙分支語(yǔ)句可以改寫成如下的條件表達(dá)式: max=(aifa>=belseb)多分支選擇結(jié)構(gòu)
是針對(duì)兩種以上不同情況的復(fù)雜處理132if條件1:
滿足條件1執(zhí)行的語(yǔ)句塊1elif條件2:
滿足條件2執(zhí)行的語(yǔ)句塊2elif條件3:
滿足條件3執(zhí)行的語(yǔ)句塊3
…else:
以上N-1個(gè)條件都不滿足時(shí)執(zhí)行的語(yǔ)句塊N133【例4-4】將輸入百分制的成績(jī)轉(zhuǎn)換成五分制等級(jí)134x=int(input('請(qǐng)輸入成績(jī):'))ifx>100:print('wrongscore<=100')elifx>=90:print('A')elifx>=80:print('B')elifx>=70:print('C')elifx>=60:print('D')elifx>=0:print('E')else:print('wrongscore>=0'選擇結(jié)構(gòu)的嵌套進(jìn)行分層處理在一個(gè)if語(yǔ)句中可以嵌套別的if或者if-else語(yǔ)句,達(dá)到根據(jù)復(fù)雜條件進(jìn)行篩選處理的效果不同層次的分句縮進(jìn)量不同相同層次的語(yǔ)句縮進(jìn)量相同135選擇結(jié)構(gòu)的嵌套136格式如下:if條件1:
語(yǔ)句塊1 if條件2:
語(yǔ)句塊2 else:
語(yǔ)句塊3 else:
語(yǔ)句塊4【例4-6】編程求解一元二次ax2+bx+c=0。137分析:首先根據(jù)輸入a的數(shù)值,區(qū)分當(dāng)前輸入的系數(shù)能否構(gòu)成一元二次方程:1.a=0時(shí)顯示輸入的系數(shù)構(gòu)成的“不是一元二次方程”。2.若a≠0,需要對(duì)是否實(shí)根還是虛根的情況篩選:(1)b2+4ac>=0,有兩個(gè)實(shí)根;(2)b2+4ac<0,有兩個(gè)虛根。138代碼如下:importmathx=input('Enternumbera,b,c=')a,b,c=map(float,x.split())ifmath.fabs(a)>1e-5:d=b**2-4*a*cifd>=0:x1=(-b+math.sqrt(d))/(2*a)x2=(-b+math.sqrt(d))/(2*a)print("x1={:.2f},x2={:.2f}\n".format(x1,x2))else:x1=-b/(2*a)x2=math.sqrt(math.fabs(d))/(2*a)print('x1={:.2f}+{:.2f}i\n'.format(x1,x2))print('x1={:.2f}-{:.2f}i\n'.format(x1,x2))else:print('不是一元二次方程')4.4循環(huán)結(jié)構(gòu)139解決需要重復(fù)執(zhí)行多次的操作由循環(huán)條件和循環(huán)體兩部分組成每次循環(huán)都是先進(jìn)行條件判斷,滿足條件才能進(jìn)行一次循環(huán),一旦循環(huán)條件不滿足時(shí)就結(jié)束循環(huán)Python提供了whili和for兩種循環(huán)語(yǔ)句
while語(yǔ)句140格式如下:
while條件:
循環(huán)體或者 while條件:
循環(huán)體
else:
語(yǔ)句塊
采用循環(huán)結(jié)構(gòu)時(shí)需要考慮設(shè)置一定條件來(lái)完成重復(fù)操作的簡(jiǎn)稱條件循環(huán)141【例4-7】求兩個(gè)整數(shù)的最大公約數(shù)x=input('請(qǐng)輸入兩個(gè)數(shù)字a,b:')a,b=map(int,x.split())x,y=a,bifx<y:x,y=y,xr=x%ywhiler!=0:x,y=y,rr=x%yprint("{}和{}的最大公約數(shù)是{}".format(a,b,y))程序運(yùn)行結(jié)果:請(qǐng)輸入兩個(gè)數(shù)字a,b:364536和45的最大公約數(shù)是9
for語(yǔ)句142格式如下:
for循環(huán)變量in循環(huán)變量需要遍歷的序列:
循環(huán)體或者
for循環(huán)變量in循環(huán)變量需要遍歷的序列:
循環(huán)體
else:
語(yǔ)句塊
在使用循環(huán)結(jié)構(gòu)時(shí),如果事先明確循環(huán)次數(shù)或者清楚所要遍歷的每種情況,我們就用for語(yǔ)句【例4-8】求1+2+3+4+…+100143s=0foriinrange(1,101):s=s+iprint(s)結(jié)果:5050循環(huán)的嵌套結(jié)構(gòu)144在一個(gè)循環(huán)里嵌套了另一個(gè)循環(huán)執(zhí)行過(guò)程:里層從開(kāi)始到結(jié)束的整個(gè)循環(huán)對(duì)應(yīng)外層的一次循環(huán)遍歷外層的m次循環(huán)和內(nèi)層n次循環(huán),內(nèi)層的執(zhí)行語(yǔ)句要重復(fù)m*n次可以是while語(yǔ)句和for語(yǔ)句各自或相互的嵌套
例4-10打印輸出如下格式的九九乘法口訣表1451*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9 2*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18
3*3=93*4=123*5=153*6=183*7=213*8=243*9=27
4*4=164*5=204*6=244*7=284*8=324*9=36
5*5=255*6=305*7=355*8=405*9=45
6*6=366*7=426*8=486*9=54
7*7=497*8=567*9=63
8*8=648*9=729*9=81146分析:外層:行的輸出(一行的操作重復(fù)九次)內(nèi)層:列的輸出:空格的輸出(數(shù)量與所在行有關(guān))算式的輸出(數(shù)量與所在行有關(guān))換行
foriinrange(1,10):forjinrange(1,i):print(''*8,end='')forjinrange(i,10):print('{}*{}={:<4}'.format(i,j,i*j),end='')print('\n')代碼如下:break和continue語(yǔ)句147用于特定條件下提前結(jié)束某個(gè)或者某次循環(huán)break語(yǔ)句用于結(jié)束某一層循環(huán)continue語(yǔ)句用于結(jié)束某一次循環(huán)148【例4-11】判定某個(gè)整數(shù)m是否素?cái)?shù)k=sqrt(m);i為2~k之間的整數(shù);依次讓m對(duì)i整除一遍,若有一個(gè)i被m整除,則排除m是素?cái)?shù),中斷整除遍歷;循環(huán)正常結(jié)束,表示沒(méi)有一個(gè)i被m整除,確定m為素?cái)?shù)。149代碼如下:importmathx=int(input())k=int(math.sqrt(x))foriinrange(2,k+2):ifx%i==0:breakifi<=k:print('{}不是素?cái)?shù)'.format(x))else:print('{}是素?cái)?shù)'.format(x))執(zhí)行結(jié)果:5656不是素?cái)?shù)3737是素?cái)?shù)1504.5典型應(yīng)用程序雞兔同籠問(wèn)題【例4-12】假設(shè)共有雞和兔40只,腳100只,問(wèn)雞和兔各多少只。forjiinrange(1,41):if2*ji+(40-ji)*4==100:print('雞:{},兔:{}'.format(ji,40-ji))執(zhí)行結(jié)果:雞:30,兔:10.151利用格里高利公式求π的近似值格里高利公式:分析:公式的變化規(guī)律是每次累加項(xiàng)的絕對(duì)值在越變?cè)叫?,結(jié)合精度的要求,我們?cè)诶奂禹?xiàng)的絕對(duì)值一旦小于10-6時(shí)停止累加,累加問(wèn)題可以用循環(huán)結(jié)構(gòu)解決,至于每次累加項(xiàng)的變號(hào)問(wèn)題在循環(huán)中也可以方便地實(shí)現(xiàn)。因?yàn)檠h(huán)次數(shù)的不確定,所以考慮用while語(yǔ)句。152代碼如下:importmathsign=1pi=0n=1t=1whilemath.fabs(t)>=1e-6:t=sign/npi=pi+tn=n+2sign=-signprint('pi={}'.format(pi*4))153排序算法要求對(duì)輸入的若干字符串進(jìn)行從小到大排序選擇算法分析:有n個(gè)長(zhǎng)短、內(nèi)容不同的字符串.(放在列表中),經(jīng)過(guò)n-1輪找相對(duì)最小的字符串,可實(shí)現(xiàn)將n個(gè)字符串按升序排列。每一輪都是通過(guò)比較找到當(dāng)前輪的最小字符串,然后交換到這一輪的最前位置上。第一輪所有n個(gè)字符串參與比較,第二輪剔除已經(jīng)排在第一位的最小字符串,在剩余的n-1個(gè)字符串中找最小值,找到后交換到第二個(gè)位置,再開(kāi)始下一輪操作,以此類推,參與比較的字符串越來(lái)越少,最終只剩下一個(gè)字符串時(shí),意味著排序結(jié)束。154fshh
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效復(fù)習(xí)公路工程考試試題及答案
- 優(yōu)化復(fù)習(xí)的試題及答案指南
- 智能倉(cāng)儲(chǔ)與物流機(jī)器人考核試卷
- 糧食倉(cāng)儲(chǔ)企業(yè)綠色經(jīng)濟(jì)企業(yè)內(nèi)部控制考核試卷
- 計(jì)算機(jī)二級(jí)MySQL常見(jiàn)問(wèn)題試題及答案
- 快速提升的2025年信息系統(tǒng)監(jiān)理師試題及答案
- 公共場(chǎng)所安全管理制度
- 嵌入式系統(tǒng)的可靠性分析方法試題及答案
- 賓館機(jī)房衛(wèi)生管理制度
- 地鐵施工衛(wèi)生管理制度
- 事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)制度
- 工學(xué)云周報(bào)范文200字
- 西方文論經(jīng)典導(dǎo)讀智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 中國(guó)居民膳食指南(全)
- 國(guó)家開(kāi)放大學(xué)《教育心理學(xué)》形成性考核冊(cè)參考答案
- 調(diào)味品QS審查細(xì)則
- 《淹溺急救》PPT課件(2022版)
- 四川省職工住房補(bǔ)貼實(shí)施辦法
- 遼寧醫(yī)院明細(xì).xls
- JYC全自動(dòng)變頻抗干擾介質(zhì)損耗測(cè)試儀
- 報(bào)考廣東警官學(xué)院考生政審表
評(píng)論
0/150
提交評(píng)論