版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目一Python開發(fā)初體驗(yàn)textbook教材Python程序設(shè)計(jì)項(xiàng)目式教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546Contents目錄01.Python速覽02.搭建開發(fā)環(huán)境03.輸入/輸出—矩形面積04.認(rèn)識(shí)數(shù)據(jù)類型—數(shù)值和字符串05.標(biāo)準(zhǔn)庫(kù)使用—圓周長(zhǎng)和面積06.項(xiàng)目小結(jié)PartOnePython速覽了解Python起源及特點(diǎn)了解Python名字由來和LOGO熟記Python官網(wǎng)網(wǎng)址掌握Python語言的主要特點(diǎn)了解Python兩個(gè)版本及其區(qū)別Python起源Python的起源Python的設(shè)計(jì)者GuidovanRossum(吉多·范羅蘇姆),于1956年出生于荷蘭,1982年畢業(yè)于阿姆斯特丹大學(xué)(荷蘭文:UniversiteitvanAmsterdam,縮寫為UvA),并獲得了數(shù)學(xué)和計(jì)算機(jī)科學(xué)雙碩士學(xué)位。在1989年圣誕節(jié)期間為了打發(fā)無聊的時(shí)光,Guido設(shè)計(jì)并開發(fā)出了Python這種腳本解釋型語言,并于1991年公開發(fā)行了Python的第一個(gè)版本。Python的誕生Guido當(dāng)時(shí)非常喜歡看由“巨蟒劇團(tuán)”出演的電視劇“飛翔的馬戲團(tuán)”(即MontyPython'sFlyingCircus),是“巨蟒劇團(tuán)”(MontyPython)的粉絲。于是,Guido便以劇團(tuán)的名稱把編程語言命名為Python。雖然Python命名本意與動(dòng)物蟒蛇并無關(guān)聯(lián),但是,依然把一對(duì)“雙蟒蛇”作為了該語言的官方()LOGO。Python起源Python主要特點(diǎn)1.簡(jiǎn)潔Python的語法相較于其它語言來說簡(jiǎn)潔明了,易于理解和學(xué)習(xí),使得開發(fā)者可以快速上手并編寫出高質(zhì)量的代碼。我們分別使用Java、Python等編程語言輸出“Hello”的程序?qū)Ρ热缦滤?。Python主要特點(diǎn)2.面向?qū)ο驪ython是完全面向?qū)ο蟮恼Z言,所有事物都視為對(duì)象,包括數(shù)值、字符串、函數(shù)等。這使得代碼組織和重用更為靈活和高效。3.強(qiáng)大的開發(fā)庫(kù)Python擁有豐富的標(biāo)準(zhǔn)庫(kù)和大量第三方庫(kù),提供了廣泛的功能和工具。4.解釋型語言Python是解釋型語言,代碼在運(yùn)行時(shí)由解釋器逐行解釋執(zhí)行。5.其他特點(diǎn)Python屬于高級(jí)語言,具有良好的可移植性及安全性。Python版本01Python2.xPython2.x是Python語言的一個(gè)重要版本,它支持許多Python3.x的特性,但已經(jīng)停止維護(hù)。02Python3.xPython3.x是Python語言的最新版本,它包含了許多新特性和改進(jìn),是Python開發(fā)的首選版本。03Python2.x與Python3.x的差異Python2.x和Python3.x在語法、庫(kù)和API等方面存在一些差異,Python官方已于2020年1月1日宣布不再維護(hù)Python2版本,各個(gè)第三方庫(kù)也逐漸放棄支持Python2,本教材主要講解Python3。課堂小測(cè)1.以下關(guān)于Python的說法正確的是()A.Python與C語言一樣是面向過程的程序設(shè)計(jì)語言B.Python與面向?qū)ο笳Z言C++一樣同屬于編譯型語言C.良好的可移植性是Python區(qū)別于其他編程語言的主要特點(diǎn)D.print2+3是Python2的正確語法,其輸出結(jié)果為5PartTwo搭建開發(fā)環(huán)境培養(yǎng)通過官網(wǎng)下載安裝Python3并配置環(huán)境變量的能力掌握使用IDLE交互式開發(fā)Python的能力掌握使用文本編輯源程序文件開發(fā)Python的能力掌握通過Anaconda安裝JupyterNotebook的能力了解PyCharm、Spyder等集成開發(fā)環(huán)境的安裝和使用安裝配置Python3下載地址:/downloads/下載Python301打開鏈接后,選擇相應(yīng)的Python版本,下載安裝,如圖1-1所示。02安裝Python3假設(shè)安裝在了C:\Python\目錄下,則在安裝目錄C:\Python\Doc下有Python幫助文檔,如圖1-2所示。圖1-1安裝包下載界面圖1-2幫助文檔安裝配置Python303設(shè)置環(huán)境變量以Win10操作系統(tǒng)為例,搜索環(huán)境變量,單擊“編輯系統(tǒng)環(huán)境變量”(圖1-3所示)→點(diǎn)擊“環(huán)境變量”按鈕(圖1-4所示)→打開“系統(tǒng)變量”對(duì)話框→選中“Path”→單擊“編輯”按鈕→單擊“新建”按鈕→輸入Python安裝目錄“C:\Python\”→單擊“確定”按鈕→單擊“確定”按鈕,如圖1-5所示。圖1-3搜索環(huán)境變量圖1-4打開環(huán)境變量圖1-5配置環(huán)境變量Python解釋器自帶IDLEIDLE是Python解釋器自帶的集成開發(fā)環(huán)境,提供了基本的代碼編輯和調(diào)試功能。IDLE簡(jiǎn)介安裝并配置好環(huán)境變量后,通過計(jì)算機(jī)左下角“開始”找到剛安裝好的Python,打開IDLE(IntegratedDevelopmentandLearningEnvironment),進(jìn)入交互式編程界面,在提示符>>>后輸入要執(zhí)行的命令,然后按回車鍵解釋執(zhí)行,如圖1-6所示。IDLE使用IDLE提供了代碼編輯、運(yùn)行、調(diào)試等功能,可以滿足初學(xué)者的基本開發(fā)需求。IDLE功能圖1-6交互式環(huán)境開發(fā)文本編輯.py源程序并解釋執(zhí)行假設(shè)在D:\Python_WorkSpace\Chapter1目錄下新建一個(gè)記事本文件print_test.txt,編輯兩條Python輸出語句并保存,如圖1-7所示。01創(chuàng)建記事本文件把文件后綴名由.txt修改為.py文件,如圖1-8所示。02修改為Python源文件后綴打開“命令提示符”(點(diǎn)擊Win+R,然后在提示框輸入cmd),先鍵入d:并回車進(jìn)入D盤,再使用cd命令更改目錄到D:\Python_WorkSpace\Chapter1下,然后調(diào)用Python解釋器解釋執(zhí)行文件print_test.py,輸出運(yùn)行結(jié)果,如圖1-9所示。03解釋執(zhí)行.py源文件圖1-7記事本文件圖1-8修改為.py后綴圖1-9執(zhí)行源文件Python開發(fā)環(huán)境初識(shí)驗(yàn)證代碼IDE種類0103所有案例代碼均在JupyterNotebook中驗(yàn)證通過,確保學(xué)習(xí)順利。PyCharm、JupyterNotebook、Spyder等是常用的PythonIDE。02參考相關(guān)資料安裝IDE,本教材采用Anaconda安裝JupyterNotebook。安裝IDEPartThree輸入/輸出—矩形面積【任務(wù)描述】從鍵盤輸入矩形的長(zhǎng)和寬,計(jì)算其面積并輸出。【任務(wù)分析】該任務(wù)涉及數(shù)值輸入操作,變量及輸出操作。掌握print輸出函數(shù)的原型及調(diào)用掌握input輸入函數(shù)的原型及調(diào)用掌握int、float及eval的使用和差別掌握type查看類型函數(shù)的使用變量及類型查看函數(shù)type保留字(關(guān)鍵字):指在編程語言中已經(jīng)定義過的字,編程者不能再將這些字作為自定義標(biāo)識(shí)符使用。保留字通常與Python版本有關(guān)。Python3.8.5版本,其保留字共有35個(gè)。變量:是有名字(標(biāo)識(shí)符)的內(nèi)存空間,且其中存儲(chǔ)和表示的值可以改變。變量及類型查看函數(shù)type變量類型:Python中變量本身無類型,也無須用類型關(guān)鍵字指定,其類型是由其值的類型決定的,可使用type()函數(shù)查看變量或數(shù)據(jù)的類型。type函數(shù)使用示例如下。變量名(標(biāo)識(shí)符)命名規(guī)則:由大小寫英文字母(A~Z,a~z)、數(shù)字(0~9)、下畫線(_)和漢字或其組合構(gòu)成,但不能以數(shù)字開頭。例如,Class_5、_a、姓名等都是Python合法的標(biāo)識(shí)符;而5a、a@、¥等都是錯(cuò)誤的標(biāo)識(shí)符。另外,Python標(biāo)識(shí)符對(duì)大小寫敏感,即A和a為不同的標(biāo)識(shí)符。標(biāo)識(shí)符不能與保留字相同。print函數(shù)使用value:輸出各數(shù)據(jù)項(xiàng)的值,以逗號(hào)間隔。sep:可選,輸出各value值的間隔符,默認(rèn)空格,也可顯式指定,如逗號(hào)sep=','。end:可選,輸出所有value后的結(jié)束符,默認(rèn)換行,也可顯式指定,如空格end=''。參數(shù)解析print函數(shù)使用1.未顯式指定輸出數(shù)據(jù)項(xiàng)的間隔符,默認(rèn)為空格。2.顯式指定各輸出數(shù)據(jù)項(xiàng)的間隔符。3.未顯式指定各數(shù)據(jù)項(xiàng)輸出完畢后的結(jié)束符,默認(rèn)為換行。4.既指定數(shù)據(jù)項(xiàng)的輸出間隔符,又指定結(jié)束符。input函數(shù)使用prompt:可選,通常為增強(qiáng)代碼可讀性的輸入提示信息。參數(shù)解析注:不管輸入的是字符串、數(shù)值還是其他類型,該函數(shù)均返回其對(duì)應(yīng)的字符串類型。input函數(shù)使用1.從鍵盤上輸入一句話,直接保存到變量s中2.使用input()輸入數(shù)值,返回值保存到變量中,使用type()函數(shù)查看其返回值類型。3.input函數(shù)把輸入的數(shù)據(jù)均以字符串類型返回,如果輸入的為數(shù)值,則可通過強(qiáng)制類型轉(zhuǎn)換把數(shù)值字符串轉(zhuǎn)換為整型數(shù)int或浮點(diǎn)數(shù)float;或使用更通用的eval()函數(shù)從數(shù)值字符串中提取出相應(yīng)的數(shù)值。課堂小測(cè)以下關(guān)于Python的說法中錯(cuò)誤的是()A.可使用type()查看某數(shù)據(jù)或變量的類型B.不管輸入的是整型、浮點(diǎn)型還是字符串型,input函數(shù)均返回字符串型C.a(chǎn)=input('輸入整數(shù):'),若輸入3.14,則a為“3.14”D.a(chǎn)=int(input('輸入整數(shù):')),若輸入3.14,則a為3PartFour認(rèn)識(shí)數(shù)據(jù)類型—數(shù)值和字符串掌握常見算術(shù)運(yùn)算符的使用掌握print的格式化輸出方式掌握數(shù)值類型的數(shù)據(jù)掌握字符串類型的表示和使用數(shù)值類型及print格式化輸出Python語言的數(shù)據(jù)類型主要有數(shù)值、字符串、列表、元組、集合和字典等數(shù)值型數(shù)據(jù)通常包括:整數(shù)和浮點(diǎn)數(shù)type函數(shù)可以查看數(shù)值類型運(yùn)算符描述舉例+加法5+2.15=7.15-減法5-3=2*乘法2*3=6/除法11/4=2.75//相除取商11//4=2%相除取余11%4=3**冪次方2**10=1024常見運(yùn)算符數(shù)值類型及print格式化輸出print調(diào)用格式:print(格式控制%(輸出項(xiàng)列表))格式控制部分為字符串,當(dāng)輸出項(xiàng)數(shù)多于一個(gè)時(shí),必須用()括起來,各輸出項(xiàng)之間用逗號(hào)隔開。python中有許多格式控制符,如十進(jìn)制常用%d或%i,八進(jìn)制用%o,浮點(diǎn)數(shù)用%f等等,詳細(xì)可見書中列舉。Python字符串起止邊界Python語言中字符串?dāng)?shù)據(jù)的起止邊界既可以是單引號(hào)也可以是雙引號(hào)。但若字符串本身含有單引號(hào)或雙引號(hào),那么起止邊界不能直接含有起止邊界符,以免報(bào)錯(cuò)。通常有如下兩種解決方案。引號(hào)形式不同字符串內(nèi)容中的引號(hào)形式與起止邊界不同,確保字符串正確解析轉(zhuǎn)義字符表示字符串內(nèi)容中的引號(hào)以轉(zhuǎn)義字符形式表示,單、雙引號(hào)均可作為起止邊界。PartFive標(biāo)準(zhǔn)庫(kù)使用—圓周長(zhǎng)和面積【任務(wù)描述】輸入圓的半徑,計(jì)算并輸出其周長(zhǎng)和面積,分別保留兩位和三位小數(shù)?!救蝿?wù)分析】該任務(wù)需使用標(biāo)準(zhǔn)庫(kù)math中的圓周率,以及保留小數(shù)位數(shù)的print輸出格式控制方法。了解常見的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)掌握標(biāo)準(zhǔn)庫(kù)的兩種調(diào)用方式模塊的兩種訪問方式在Python中,可以直接使用import模塊名導(dǎo)入模塊直接導(dǎo)入使用from語句可以導(dǎo)入模塊中的特定函數(shù)或類,可以使用from模塊名import屬性名或from模塊名import函數(shù)名使用from語句0102調(diào)用方式一:模塊名.屬性名或模塊名.函數(shù)名()調(diào)用方式二:屬性名或函數(shù)名()print格式化輸出格式化輸出使用print函數(shù)進(jìn)行格式化輸出,如print("圓周長(zhǎng):{:.2f}".format(a)),其中{:.2f}表示保留兩位小數(shù)。字符串格式化使用字符串格式化進(jìn)行輸出,如print("圓周長(zhǎng):%s"%(a)),其中%s表示字符串。f-string格式化使用f-string進(jìn)行格式化輸出,如print(f"圓周長(zhǎng):{a:.2f}"),其中:.2f表示保留兩位小數(shù)。注:%.nf:四舍五入保留小數(shù)點(diǎn)后n位。%.0f:四舍五入取整數(shù)部分。%f:通常默認(rèn)保留小數(shù)點(diǎn)后6位,不夠補(bǔ)0。課堂小測(cè)以下代碼執(zhí)行正確的是()A.frommathimportsqrtsqrt(-4)B.frommathimportsqrtmath.sqrt(4)C.importmathsqrt(4)D.importmathmath.sqrt(5)PartSix項(xiàng)目小結(jié)項(xiàng)目小結(jié)THANKS!項(xiàng)目二
簡(jiǎn)易計(jì)算器———分支結(jié)構(gòu)textbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546設(shè)計(jì)一個(gè)簡(jiǎn)易計(jì)算器,根據(jù)輸入數(shù)字進(jìn)行加(+)、減(-)、乘(*)、除(/)、相除取商(//)、相除取余(%)等進(jìn)行相應(yīng)的運(yùn)算,并輸出其運(yùn)算結(jié)果。項(xiàng)目描述Contents目錄01.判斷考試是否通過—if-else雙分支04.簡(jiǎn)易計(jì)算器的項(xiàng)目實(shí)施02.判斷商品是否有促銷活動(dòng)—if分支03.根據(jù)成績(jī)判斷等級(jí)—if-elif-else05A.項(xiàng)目小結(jié)PartOne判斷考試是否通過——if-else雙分支掌握if-else分支結(jié)構(gòu)掌握if-else的執(zhí)行流程能夠使用if-else解決實(shí)際問題if-else分支結(jié)構(gòu)【任務(wù)描述】輸入一成績(jī),判斷其是否及格,成績(jī)大于等于60分及格,小于60分不及格。了解if-else分支結(jié)構(gòu)的語法格式注:if體和else體既可以是一條語句,也可以是多條語句,注意縮進(jìn)。任務(wù)流程與實(shí)施if-else分支結(jié)構(gòu)最重要的步驟就是畫出流程圖對(duì)于上述問題,我們可以畫出流程圖如下任務(wù)流程與實(shí)施若輸入成績(jī)58,則會(huì)進(jìn)入B房間,輸出結(jié)果如下:若輸入成績(jī)96,則會(huì)進(jìn)入A房間,輸出結(jié)果如下:PartTwo判斷商品是否有促銷活動(dòng)—if分支掌握if分支結(jié)構(gòu)掌握if分支結(jié)構(gòu)的執(zhí)行流程能夠使用if分支結(jié)構(gòu)解決實(shí)際問題if分支結(jié)構(gòu)一商店為提升工作日的銷售額,策劃了優(yōu)惠促銷活動(dòng),星期一、二、四這三天,凡一次性購(gòu)物總額在200元以上的,減免30元。幫顧客計(jì)算要付的金額。了解if分支結(jié)構(gòu)的語法格式畫出流程圖:字符串格式化函數(shù)formatformat格式:string.format(數(shù)據(jù)項(xiàng)列表)
保留小數(shù)點(diǎn)后n位:'{:.nf}'.format(num)。任務(wù)實(shí)施若滿足條件則輸出:不滿足任意一個(gè)條件則輸出:PartThree根據(jù)成績(jī)判斷等級(jí)—if-elif-else掌握if-elif-else級(jí)聯(lián)多分支結(jié)構(gòu)掌握if-elif-else級(jí)聯(lián)多分支結(jié)構(gòu)的執(zhí)行流程能夠使用級(jí)聯(lián)多分支結(jié)構(gòu)解決實(shí)際問題if-elif-else級(jí)聯(lián)多分支結(jié)構(gòu)輸入一成績(jī),判斷其對(duì)應(yīng)等級(jí),90分及以上為優(yōu)秀,大于等于80分且小于90分為良好,大于等于60分且小于80分為及格,小于60分為不及格。對(duì)于該任務(wù),任務(wù)總共有四種情況,這屬于多分支情況,可使用if-elif-else級(jí)聯(lián)多分支實(shí)現(xiàn)。我們先寫出if-elif-else級(jí)聯(lián)多分支結(jié)構(gòu)的語法格式說明:該結(jié)構(gòu)中可含有1個(gè)或多個(gè)elif部分,else部分可省略。從前往后依次判斷各條件表達(dá)式的值,如果某個(gè)條件表達(dá)式成立,即為邏輯真,則執(zhí)行其對(duì)應(yīng)的語句組,并終止整個(gè)分支結(jié)構(gòu)的執(zhí)行。如果上述所有表達(dá)式均不成立,即均為邏輯假且含有else部分時(shí),則執(zhí)行對(duì)應(yīng)的else部分語句組。執(zhí)行流程與任務(wù)實(shí)施輸出結(jié)果如下:PartFour簡(jiǎn)易計(jì)算器的項(xiàng)目實(shí)施項(xiàng)目實(shí)施運(yùn)行結(jié)果如下:PartFive項(xiàng)目小結(jié)主要知識(shí)點(diǎn)總結(jié)知識(shí)點(diǎn)示例說明if分支結(jié)構(gòu)if條件表達(dá)式:
語句組A隱式雙分支:執(zhí)行語句組A和不執(zhí)行該語句組A兩種情況if-else分支結(jié)構(gòu)if條件表達(dá)式:
語句組A:else:
語句組B顯式雙分支:當(dāng)條件表達(dá)式的值為邏輯真時(shí),執(zhí)行語句組A,否則執(zhí)行語句組Bif-elif-else分支結(jié)構(gòu)if條件表達(dá)式1:
語句組1elif條件表達(dá)式2:
語句組2…elif條件表達(dá)式n:
語句組nelse:
其他語句組該if-elif-else級(jí)聯(lián)多分支結(jié)構(gòu)的執(zhí)行流程是:
從前往后依次判斷各表達(dá)式的值,如果某表達(dá)式的值為真,則執(zhí)行對(duì)應(yīng)的分支語句組,并終止整個(gè)多分支結(jié)構(gòu)。若所有表達(dá)式的值均為假,且含有else時(shí),則執(zhí)行對(duì)應(yīng)的else語句組。
else部分可以省略易錯(cuò)知識(shí)點(diǎn)總結(jié)縮進(jìn)錯(cuò)誤01這是由于縮進(jìn)不當(dāng),造成邏輯混亂。對(duì)上述代碼進(jìn)行修改:易錯(cuò)知識(shí)點(diǎn)總結(jié)包含重復(fù)條件02條件的重復(fù)包含,雖然既無語法錯(cuò)誤,也無運(yùn)行時(shí)錯(cuò)誤,且能得到正確結(jié)果,但為規(guī)范起見,本教材把這種邏輯不清晰的程序視為“錯(cuò)誤”。對(duì)上述代碼進(jìn)行修改:易錯(cuò)知識(shí)點(diǎn)總結(jié)語義錯(cuò)誤03a=5為賦值表達(dá)式,其結(jié)果非邏輯值,故錯(cuò)誤。a==5為關(guān)系表達(dá)式,其值為邏輯值對(duì)上述代碼進(jìn)行修改:THANKS!項(xiàng)目三
循環(huán)結(jié)構(gòu)textbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546Contents目錄01.抓娃娃游戲—while循環(huán)02.猜數(shù)字謎游戲—循環(huán)流程控制04.項(xiàng)目小結(jié)03.模擬發(fā)紅包程序—for循環(huán)、列表PartOne
任務(wù)一抓娃娃游戲—while循環(huán)while循環(huán)結(jié)構(gòu)【任務(wù)描述】抓娃娃游戲玩一局需要3元錢,根據(jù)充值卡中的金額判斷還能玩幾局。【任務(wù)分析】當(dāng)(while)充值卡中的余額(balance)大于等于3元時(shí),游戲一直進(jìn)行(重復(fù)),同時(shí)每次支付3元,即balance-=3,直到balance小于3元時(shí),游戲終止。while語句語法格式如下:執(zhí)行流程:首先判斷循環(huán)控制表達(dá)式Exp_cntrl的值,當(dāng)該表達(dá)式的值為邏輯真(True)時(shí),會(huì)一直執(zhí)行循環(huán)體(語句組A),直到表達(dá)式的值為邏輯假(False)時(shí),結(jié)束循環(huán)體執(zhí)行。流程圖如下:循環(huán)控制變量任務(wù)實(shí)施運(yùn)行結(jié)果如下:參考代碼如下:鞏固案例【案例1】輸入任意一個(gè)十進(jìn)制正整數(shù),將其“反序”后輸出(若輸入:1234,則輸出:4321)把原數(shù)從最低位到最高位逐位分離→按照分離出的順序,用分離出的數(shù)字組成新的十進(jìn)制整數(shù)逐步分離出當(dāng)前n的最低位數(shù)字m為新數(shù)字,將剛分離的t作為低位,完成倒序去除已分離的低位,為下次分離做準(zhǔn)備鞏固案例【案例2】計(jì)算并輸出1-3+5-7+…-99的值。符號(hào)位:每執(zhí)行一次sign就變成原來的相反數(shù)數(shù)值位:實(shí)現(xiàn)奇數(shù)累加當(dāng)前數(shù)據(jù)項(xiàng):組建當(dāng)前的數(shù)據(jù)保存在item中求和變量:將每一輪得出的數(shù)據(jù)累加到s中PartTwo任務(wù)二猜數(shù)字謎游戲—循環(huán)流程控制【任務(wù)描述】設(shè)計(jì)一個(gè)猜數(shù)字游戲,隨機(jī)生成1到100之間的一個(gè)整數(shù),玩家總共有5次機(jī)會(huì),每次輸入所猜數(shù)字,程序給出相應(yīng)的提示信息(“再大一點(diǎn)”、“再小一點(diǎn)”或“$恭喜您猜中了$”),如果猜中了,提示“$恭喜您猜中了$”,“總共猜了*次”,游戲結(jié)束,否則游戲繼續(xù);總共有5次機(jī)會(huì),若均沒猜中,則提示“很遺憾,今天運(yùn)氣不好!”并退出循環(huán)。任務(wù)描述【任務(wù)分析】該任務(wù)涉及循環(huán)結(jié)構(gòu),所以讓我們一起來學(xué)習(xí)一下break、continue以及while-else語句吧!break語句break語句語法格式執(zhí)行流程在循環(huán)體中,當(dāng)執(zhí)行到break語句時(shí),終止break所在層的循環(huán),即“循環(huán)體內(nèi)break后的語句組”部分將不再被執(zhí)行,程序執(zhí)行流程從“循環(huán)結(jié)構(gòu)后的語句組”處,繼續(xù)往后執(zhí)行。break語句【示例1】分析以下程序,輸出其運(yùn)行結(jié)果。因?yàn)閚<5,所以n的取值為0,1,2,3,4,執(zhí)行5次后循環(huán)結(jié)構(gòu)正常終止。但當(dāng)n==4時(shí),滿足條件,執(zhí)行下面一行語句,然后執(zhí)行break語句。在單層循環(huán)中,當(dāng)執(zhí)行到break時(shí),立刻終止執(zhí)行整個(gè)循環(huán)結(jié)構(gòu),直接跳出整個(gè)while語句,執(zhí)行倒數(shù)第二行語句。continue語句語法格式執(zhí)行流程在循環(huán)體中,當(dāng)執(zhí)行到continue語句時(shí),本次循環(huán)體的執(zhí)行流程將跳過“循環(huán)體內(nèi)continue后的語句組”,繼續(xù)執(zhí)行“循環(huán)判斷表達(dá)式”,即提前進(jìn)入下一次的循環(huán)準(zhǔn)備工作。continue語句continue語句【示例】分析以下程序,輸出其運(yùn)行結(jié)果。如果n==
4,先執(zhí)行下面一行語句,然后執(zhí)行continue語句,然后跳過打印“第4天打卡”這句話,并不結(jié)束循環(huán)結(jié)構(gòu),接著判斷n<5是否依然為邏輯真。運(yùn)行結(jié)果如下:while-else語句語法格式執(zhí)行流程當(dāng)循環(huán)條件表達(dá)式Exp_cntrl的邏輯值為假(False),即循環(huán)體執(zhí)行正常結(jié)束時(shí),如果含有else部分,則執(zhí)行一次對(duì)應(yīng)的else部分(語句組B)。如果循環(huán)執(zhí)行非正常結(jié)束,則不會(huì)執(zhí)行else部分。while-else循環(huán)結(jié)構(gòu)與任務(wù)實(shí)施else部分可有可無while-else循環(huán)結(jié)構(gòu)【示例1】分析以下程序,輸出其運(yùn)行結(jié)果。先執(zhí)行while循環(huán),循環(huán)正常結(jié)束后執(zhí)行else部分,這時(shí)整個(gè)while-else結(jié)構(gòu)才執(zhí)行結(jié)束,接著執(zhí)行while-else結(jié)構(gòu)后的部分。運(yùn)行結(jié)果如下:注:若while循環(huán)中包含break,則不執(zhí)行else部分。任務(wù)實(shí)施1.回到猜字謎游戲,第一步我們需要先導(dǎo)入random模塊,調(diào)用randint函數(shù)生成1到100之間的隨機(jī)整數(shù)作為謎底ans。2.輸入第一次所猜數(shù)字guess,次數(shù)cnt記為1。3.采用while-else循環(huán)結(jié)構(gòu),只要guess!=ans,循環(huán)即猜謎游戲就一直進(jìn)行下去,當(dāng)guess==ans時(shí),猜中答案,即循環(huán)正常停止時(shí),進(jìn)入并執(zhí)行else部分語句組(“恭喜您猜中了”)。任務(wù)實(shí)施運(yùn)行結(jié)果如下:PartThree任務(wù)三模擬發(fā)紅包程序—for循環(huán)、列表【任務(wù)描述】輸入發(fā)放總金額及發(fā)放個(gè)數(shù),隨機(jī)生成每個(gè)紅包的金額,并輸出。任務(wù)描述根據(jù)上述代碼,我們來逐個(gè)分析。首先,我們了解一下列表列表定義格式:列表名=[元素0,元素1,元素2,…,元素n-1]注意:列表的下標(biāo)從0開始,各個(gè)元素可以是相同類型的,也可以是不同類型的,還可以是列表本身(列表嵌套)。range函數(shù)(1)僅給出結(jié)束位置:range(stop),對(duì)象range(0,stop)。該對(duì)象返回的序列是:0,1,…,stop-1,即stop為假尾巴,不被包含在其中(2)給出起、止位置:range(start,stop)。返回對(duì)象:start,start+1,start+2,…,stop-1。(3)起止及步長(zhǎng):range(start,stop,step)。從start到stop-1的區(qū)間內(nèi),按步長(zhǎng)為step取若干樣點(diǎn)生成序列對(duì)象?!咀⒁狻浚翰介L(zhǎng)為正,表示遞增,start<stop;步長(zhǎng)為負(fù),表示遞減,start>stopfor循環(huán)結(jié)構(gòu)我們先來了解一下for循環(huán)語法格式:可以是字符串、列表、元組等數(shù)據(jù)類型,也可以是range函數(shù)生成的序列對(duì)象等。執(zhí)行流程:循環(huán)變量的取值范圍從序列或序列對(duì)象的首元素開始,依次取到尾元素,即for循環(huán)的執(zhí)行次數(shù)等于“序列”的元素?cái)?shù)量。for循環(huán)結(jié)構(gòu)習(xí)題1:從鍵盤輸入一字符串,把其中的大寫字母變?yōu)樾?,小寫字母變?yōu)榇髮?,其他不變,輸出轉(zhuǎn)換后的字符串。分析:Python中沒有字符類型,單個(gè)字符如'a'也被當(dāng)成字符串處理。遍歷原字符串中的每個(gè)子字符串s,然后對(duì)每個(gè)s進(jìn)行判斷,做相應(yīng)的大小寫轉(zhuǎn)換(轉(zhuǎn)小寫:str.lower()、轉(zhuǎn)大寫:str.upper()),并把轉(zhuǎn)換后的結(jié)果鏈接到定義的新字符串后面,循環(huán)結(jié)束后即為轉(zhuǎn)換后的字符串。for循環(huán)結(jié)構(gòu)參考代碼:運(yùn)行結(jié)果:for循環(huán)結(jié)構(gòu)習(xí)題2:輸出斐波那契數(shù)列的前10項(xiàng),已知數(shù)列的前兩項(xiàng)值為0和1,從第三項(xiàng)開始每一項(xiàng)都等于其相鄰前兩項(xiàng)之和。分析1:定義長(zhǎng)度為10的列表ls,下標(biāo)范圍是從0到9,其中0、1號(hào)位置分別為數(shù)列前兩項(xiàng)的值0和1,即ls=[0,1]。故只需計(jì)算出第3到第10項(xiàng),并依次存放到列表的2到9號(hào)位置。for循環(huán)結(jié)構(gòu)分析2:從第3項(xiàng)(i=2號(hào)位置)開始的每一項(xiàng)t都等于其相鄰的前兩項(xiàng)ls[i-1]和ls[i-2]之和,即t=ls[i-1]+ls[i-2]。然后調(diào)用列表的append方法,把t附加到列表ls的后面,即ls.append(t)。前兩項(xiàng)之和相加,若該位置下標(biāo)為i,即ls[i]=ls[i-1]+ls[i-2]t參考代碼:運(yùn)行結(jié)果:隨機(jī)數(shù)模塊random模塊導(dǎo)入:importrandom1.生成隨機(jī)浮點(diǎn)數(shù)(1)random()生成[0,1)之間的隨機(jī)浮點(diǎn)數(shù)(2)uniform(m,n)函數(shù)生成[m,n)或[m,n]之間的隨機(jī)浮點(diǎn)數(shù)2.生成隨機(jī)整數(shù)(1)randint(m,n)生成[m,n]之間的隨機(jī)整數(shù)【注意】包含起止邊界隨機(jī)數(shù)模塊random【示例1】生成5個(gè)10以內(nèi)的隨機(jī)奇數(shù)。randrange(start,stop=None,step=1)類似range返回序列對(duì)象中的隨機(jī)整數(shù)值,不包含“假尾巴”stop,step為步長(zhǎng)某次運(yùn)行結(jié)果:參考代碼:隨機(jī)數(shù)模塊random3.從給定集合中隨機(jī)選取元素(1)choice(sequence)從指定非空序列中隨機(jī)選取元素4.隨機(jī)打亂原序列元素的存儲(chǔ)順序shuffle(x,random=None),返回None(2)sample(sequence,k)抽樣:從指定非空序列中隨機(jī)抽取
k個(gè)不重復(fù)的元素PartFour項(xiàng)目小結(jié)知識(shí)點(diǎn)回顧知識(shí)點(diǎn)示例說明while循環(huán)whileExp_cntrl:
循環(huán)體語句組當(dāng)條件Exp_cntrl為邏輯真時(shí),一直執(zhí)行循環(huán)體,當(dāng)條件為假時(shí),循環(huán)結(jié)束。for循環(huán)for變量in序列:
循環(huán)體語句組循環(huán)的次數(shù)等于序列中元素的數(shù)量循環(huán)流程控制語句break終止并退出所在層循環(huán)。continue本次循環(huán)中,continue后的語句不再執(zhí)行,提前進(jìn)入下一次循環(huán)條件的判斷THANKS!項(xiàng)目四打印九九乘法表與星號(hào)陣textbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546任務(wù)描述【任務(wù)描述】打印九九乘法表,如下所示?!痉治觥吭擁?xiàng)目屬于打印輸出多行多列的情景,控制行數(shù)需使用一層循環(huán),而每一行又有多列,控制每行的列數(shù)又需要一層循環(huán),故屬于雙重循環(huán),即循環(huán)的嵌套。接下來我們使用兩個(gè)案例來讓同學(xué)們了解循環(huán)的嵌套!Contents目錄01.輸出星號(hào)陣——循環(huán)嵌套02.輸出星號(hào)三角陣03.項(xiàng)目實(shí)施04.鞏固案例05.項(xiàng)目小結(jié)PartOne輸出星號(hào)陣——循環(huán)嵌套掌握循環(huán)嵌套結(jié)構(gòu)能夠使用循環(huán)嵌套解決實(shí)際問題輸出星號(hào)陣【任務(wù)描述】編程輸出如下圖形。
********************【定義】在一個(gè)循環(huán)結(jié)構(gòu)內(nèi),又嵌入另一個(gè)循環(huán)結(jié)構(gòu),稱為循環(huán)結(jié)構(gòu)的嵌套或多重循環(huán),常用的為二重循環(huán)。通常把外層的循環(huán)稱為外循環(huán),內(nèi)層的循環(huán)稱為內(nèi)循環(huán)。while循環(huán)、for循環(huán)均可相互嵌套。分析:輸出該圖形,我們需要用到循環(huán)嵌套任務(wù)實(shí)施參考代碼:因?yàn)閳D形的每一行都是固定的形狀*****,重復(fù)執(zhí)行4次即得目標(biāo)圖形分析每行圖形是一個(gè)星號(hào)*之后緊跟一個(gè)空格,每行5個(gè)星號(hào),故重復(fù)5次外層循環(huán)控制行內(nèi)層循環(huán)控制列運(yùn)行結(jié)果:PartTwo輸出星號(hào)三角陣掌握三角陣的輸出能夠使用循環(huán)嵌套解決實(shí)際問題輸出星號(hào)三角形【任務(wù)描述】編程輸出如下圖形。
**********由圖可知,每行輸入的星號(hào)與其所在的行數(shù)有一定的聯(lián)系參考代碼PartThree項(xiàng)目實(shí)施項(xiàng)目實(shí)施分析1:九九乘法表的輸出形狀與打印星號(hào)三角形類似,其程序框架如下:分析2:觀察發(fā)現(xiàn),每行輸出的算式與其行數(shù)一致。假設(shè)用變量j遍歷第i行的所有列,其代碼如下:分析3:參考代碼如下:PartFour鞏固案例鞏固案例【案例1】從鍵盤輸入正整數(shù)n,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。分析1:求和變量s可以看成n項(xiàng)之和,設(shè)當(dāng)前項(xiàng)用term表示。第1項(xiàng):term=1、第2項(xiàng):term=(1+2)、第3項(xiàng):term=(1+2+3)、…、第n項(xiàng):term=(1+2+3+…+n),把每一項(xiàng)term累加到求和變量s上,使用外層循環(huán)控制該操作,循環(huán)累加n次,設(shè)i為循環(huán)控制變量,則循環(huán)結(jié)構(gòu)如下:分析2:term=(1+2+3+…+i),即把1、2、3、…、i累加到term上(term初始為0),設(shè)j為循環(huán)控制變量,則第1步中,“計(jì)算第i項(xiàng)的term值”的代碼如下:鞏固案例分析3:把第(2)步代碼嵌入到第(1)步的for循環(huán)中,即可得如下代碼:參考代碼:鞏固案例【案例2】編程輸出如下矩陣:
1
234
2
468
36912分析1:觀察該矩陣,是一個(gè)3行4列的矩陣,使用for循環(huán)控制行的輸出,設(shè)行的循環(huán)控制變量為i,用來控制行。列的循環(huán)控制變量為j,用來控制列,然后換行。其代碼如下:分析2:觀察輸出的每個(gè)數(shù)字,是數(shù)字所在的行*數(shù)字所在的位置,比如4在第2行,它的位置是第2個(gè),即2*2=4,12在第3行,它的位置是第4個(gè),即3*4=12。其代碼如下:鞏固案例分析3:把第2步嵌入到第1步的程序框架中,其代碼如下:分析4:參考代碼如下:PartFive項(xiàng)目小結(jié)項(xiàng)目小結(jié)實(shí)現(xiàn)功能錯(cuò)誤示例正確示例******row=3foriinrange(1,row+1):
forjinrange(1,i+1):
print('*',end='')
print()row=3foriinrange(1,row+1):
forjinrange(1,i+1):
print('*',end='')
print()#正確位置本項(xiàng)目主要介紹了循環(huán)嵌套。易錯(cuò)知識(shí)點(diǎn)小結(jié)如表4-1所示。表4-1易錯(cuò)知識(shí)點(diǎn)小結(jié)THANKS!項(xiàng)目五簡(jiǎn)易銀行系統(tǒng)——函數(shù)textbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項(xiàng)目描述【問題描述】設(shè)計(jì)一個(gè)建議銀行系統(tǒng),銀行根據(jù)客戶輸入,幫其辦理相應(yīng)的業(yè)務(wù),主要包括存款、取款、查詢等相關(guān)業(yè)務(wù)。Contents目錄01.多功能計(jì)算器設(shè)計(jì)——為什么使用函數(shù)02.人狗大戰(zhàn)——函數(shù)應(yīng)用03.掌握變量的作用域04.掌握匿名函數(shù)05.項(xiàng)目實(shí)施06.項(xiàng)目小結(jié)PartOne多功能計(jì)算器設(shè)計(jì)—為什么使用函數(shù)掌握函數(shù)定義結(jié)構(gòu)掌握函數(shù)調(diào)用結(jié)構(gòu)能夠使用函數(shù)解決簡(jiǎn)單問題任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)能實(shí)現(xiàn)加、減、乘、除等相關(guān)運(yùn)算的簡(jiǎn)易計(jì)算器。運(yùn)行結(jié)果如圖:讓我們一起來學(xué)習(xí)函數(shù)的基本概念來完成這個(gè)任務(wù)吧!函數(shù)概念與分類函數(shù)定義函數(shù)就是模塊,即把每一個(gè)功能相對(duì)獨(dú)立的代碼封裝起來。函數(shù)分類函數(shù)可分為庫(kù)函數(shù)(標(biāo)準(zhǔn)庫(kù)和第三方庫(kù))和自定義函數(shù)。庫(kù)函數(shù):標(biāo)準(zhǔn)庫(kù)函數(shù)如math庫(kù)中的sqrt等;第三方庫(kù)函數(shù)如matplotlib庫(kù)中的繪圖函數(shù)plot、pie等。自定義函數(shù):程序設(shè)計(jì)者根據(jù)功能自己編寫的函數(shù)。函數(shù)定義與調(diào)用1.自定義函數(shù)定義格式def函數(shù)名(參數(shù)1,參數(shù)2,…):函數(shù)體一個(gè)函數(shù)定義包含函數(shù)頭和函數(shù)體兩部分。一般把關(guān)鍵字def、函數(shù)名、參數(shù)列表、冒號(hào)這四部分稱為函數(shù)頭;冒號(hào)后縮進(jìn)的部分稱為函數(shù)體。函數(shù)名:符合標(biāo)識(shí)符的命名規(guī)則,最好見名知意。如使用add作為求和函數(shù)的函數(shù)名,sort作為排序函數(shù)的函數(shù)名。參數(shù)表:函數(shù)定義時(shí)的參數(shù)又稱為形式參數(shù),簡(jiǎn)稱形參。根據(jù)有無參數(shù),函數(shù)可分為帶參函數(shù)和無參函數(shù)。返回值:可有可無,返回關(guān)鍵字為return?!菊f明】函數(shù)定義與調(diào)用2.自定義函數(shù)調(diào)用格式在學(xué)習(xí)調(diào)用格式之前,我們來了解一下什么是帶參函數(shù)和無參函數(shù)(1)帶參函數(shù):可含有一個(gè)或多個(gè)形參,多個(gè)形參之間用逗號(hào)分隔,其代碼如下:(2)無參函數(shù),不含參數(shù),但不能省略括號(hào),其代碼如下:帶參函數(shù)調(diào)用格式:函數(shù)名(參數(shù)1,參數(shù)2,…)無參函數(shù)調(diào)用格式:函數(shù)名()任務(wù)實(shí)施進(jìn)行加減乘除運(yùn)算使用無限循環(huán)讓用戶選擇運(yùn)算類型。如果用戶選擇5,則打印退出信息并退出循環(huán)PartTwo人狗大戰(zhàn)——函數(shù)應(yīng)用掌握字典數(shù)據(jù)類型的使用掌握函數(shù)的定義和調(diào)用能夠自定義函數(shù)解決實(shí)際問題任務(wù)描述【任務(wù)描述】模擬一個(gè)人狗大戰(zhàn)游戲,人選手有姓名、年齡、生命值和攻擊力等,狗選手有名字、品種、生命值和攻擊力。人有打狗的行為,狗有咬人的行為。字典?函數(shù)定義?調(diào)用?數(shù)據(jù)類型—字典1.字典定義格式字典名={key1:value1,key2:value2,…,keyn:valuen}【注意】:鍵與值之間用冒號(hào)間隔構(gòu)成鍵值對(duì),然后使用逗號(hào)連接若干鍵值對(duì)。2.字典常見操作操
作說
明舉
例新建字典手動(dòng)大括號(hào)作為起止邊界d={}#空字典函數(shù)dict()
d=dict()#空字典,等同{}增加元素添加d[key]=v當(dāng)key不存在時(shí)即添加新鍵值對(duì)d={'Name':'Tom','Age':18}d['Sc']=98
#鍵'Sc'在d中原不存在,即增加print(d)
#{'Name':'Tom','Age':18,'Sc':98}數(shù)據(jù)類型—字典操
作說
明舉
例刪除元素pop函數(shù)刪除指定key值的鍵值對(duì)d.pop(key)
若key存在,返回對(duì)應(yīng)的value值;否則,拋出KeyError異常d={'Name':'Tom','Age':18,'Sc':98}d.pop('Sc')#{'Name':'Tom','Age':18}d.pop('No')#鍵'No'不存在,拋出異常KeyError隨機(jī)刪除并返回一鍵值對(duì)d.popitem()若d非空,則以元組的形式返回一鍵值對(duì);若為空,則拋出KeyError異常d={'Name':'Tom','Age':18,'Sc':98}d.popitem()#刪除并返回('Sc',98)d.popitem()#刪除并返回('Age',18)d.popitem()#刪除并返回('Name','Tom')d.popitem()#刪除并返回KeyErrordel刪除指定key值的鍵值對(duì)元素deld['key']若key不存在,則拋出KeyError異常d={'Name':'張三','Age':18,'Sc':98}deld['Sc']print(d)#{'Name':'張三','Age':18}清空字典d.clear()d={'Name':'張三','Age':18,'Sc':98}d.clear()print(d)#{}數(shù)據(jù)類型—字典操
作說
明舉
例修改元素修改已存在鍵(key)對(duì)應(yīng)的值d['key']=new_value
如果key值不存在,則表示增加元素d={'Name':'Tom','Sc':88}d['Sc']=92#修改成績(jī)print(d)#{'Name':'Tom','Sc':92}update更新元素d.update(k1:v1,k2:v2,…)
對(duì)已存在的key值起更新作用,對(duì)未存在的key值起新增鍵值對(duì)作用d={'a':1,'b':3,}d.update({'a':0,'d':5})#修改'a'值,新增'd'print(d.items())#dict_items([('a',0),('b',3),('d',5)])查找(訪問)元素單個(gè)元素訪問d['key']d={'Name':'Tom','Addr':{'Sc':'88','Age':'18'}}#字典嵌套print(d['Name'])#Tomprint(d['Addr'])#{'Sc':'88','Age':'18'}keys()訪問所有鍵d.keys()
返回所有鍵值對(duì)的鍵值sc={'數(shù)學(xué)':96,'語文':86}print(sc.keys())#dict_keys(['數(shù)學(xué)','語文'])values()訪問所有值d.values()返回所有鍵對(duì)應(yīng)的值sc={'數(shù)學(xué)':96,'語文':86,'英語':77}print(sc.values())#dict_values([96,86,77])items()返回所有鍵值對(duì)d.items()返回所有鍵值d={'a':7,'b':3}print(d.items())
#dict_items([('a',7),('b',3)])帶默認(rèn)值參數(shù)在函數(shù)定義時(shí),可以為參數(shù)設(shè)置默認(rèn)值,帶默認(rèn)值的參數(shù)必須放在所有非默認(rèn)值參數(shù)的后面?!緟⒖即a】在函數(shù)調(diào)用時(shí),若沒有為默認(rèn)值參數(shù)傳值,則采用參數(shù)的默認(rèn)值。在函數(shù)調(diào)用時(shí),若為默認(rèn)值參數(shù)指定新值,則用新值覆蓋默認(rèn)值。任務(wù)實(shí)施定義了一個(gè)字典attack_dog,其中包含不同品種狗的名稱和對(duì)應(yīng)的攻擊力值。定義了一個(gè)函數(shù)dog,包含狗的名字、品種、生命值和攻擊力的字典。如果狗的品種在attack_dog字典中,則攻擊力取相應(yīng)的值,否則默認(rèn)為20。定義了一個(gè)函數(shù)person,包含人的名字、年齡和生命值。如果年齡在18到40歲之間,攻擊力設(shè)為70,否則為30。任務(wù)實(shí)施定義了beat函數(shù),模擬人打狗的行為。人的攻擊力會(huì)減少狗的生命值,并打印出相應(yīng)的信息定義了dog_bite函數(shù),模擬狗咬人的行為。狗的攻擊力會(huì)減少人的生命值,并打印出相應(yīng)的信息。PartThree變量作用域掌握掌握局部變量和全局變量的定義能夠使用global在局部空間中引入全局變量全局變量是在任何函數(shù)或語句塊之外定義的變量。它們?cè)谡麄€(gè)程序范圍內(nèi)都是可見和可訪問的。全局變量局部變量的作用域限制在其定義的函數(shù)或語句塊內(nèi)。在這些局部區(qū)域內(nèi),變量默認(rèn)是有效的,且不能在外部訪問。如果需要在函數(shù)內(nèi)部修改全局變量,可以使用global關(guān)鍵詞來聲明。作用域規(guī)則局部變量是在函數(shù)或語句塊內(nèi)部定義的變量。它們僅在定義它們的函數(shù)或語句塊內(nèi)部有效。局部變量010203全局變量和局部變量全局變量和局部變量1.函數(shù)內(nèi)默認(rèn)訪問局部變量2.函數(shù)內(nèi)部訪問全局變量—global鞏固案例【案例】分析以下代碼,輸出其運(yùn)行結(jié)果。首先定義了一個(gè)全局變量g并賦值為2。在f1函數(shù)中,使用global關(guān)鍵詞聲明g為全局變量,并將其修改為3。在f2函數(shù)中,g被重新賦值為4,但這里的g是局部變量,不影響全局變量。最后,當(dāng)主程序執(zhí)行時(shí),調(diào)用f1和f2函數(shù),打印全局變量g的值,由于f1中的修改,輸出結(jié)果為3。全局變量局部變量全局變量全局變量PartFour掌握匿名函數(shù)掌握匿名函數(shù)的定義和調(diào)用掌握map、filter、reduce等函數(shù)匿名函數(shù)在函數(shù)功能邏輯較簡(jiǎn)單、代碼量較少的情況下,可以將函數(shù)定義為匿名函數(shù),即不給該函數(shù)指定標(biāo)識(shí)符(名字),通常稱為“l(fā)ambda表達(dá)式”。其定義格式為:lambda參數(shù)1,參數(shù)2,…:功能實(shí)現(xiàn)函數(shù)與匿名函數(shù)對(duì)比利用函數(shù)求和利用匿名函數(shù)求和【結(jié)論】由此可見,匿名函數(shù)所保存的“對(duì)象”或“模型”非常類似普通函數(shù)名,在調(diào)用格式上兩者也非常相似。lambda與mapmap函數(shù)定義格式為:map(func,iterables)【功能描述】將函數(shù)func應(yīng)用于可迭代對(duì)象iterables中的每個(gè)元素,并返回一個(gè)包含所有結(jié)果的map對(duì)象,該對(duì)象可以被轉(zhuǎn)換為列表或元組以查看結(jié)果?!景咐慷x一個(gè)匿名函數(shù)來計(jì)算數(shù)字的平方,利用`map`函數(shù)將此函數(shù)應(yīng)用于列表`[1,2,3,4,5]`中的每個(gè)元素。并使用`list()`將其轉(zhuǎn)換為列表形式,打印每個(gè)元素的平方結(jié)果。lambda與filterfilter函數(shù)定義格式為:filter(func,iterables)【功能描述】可迭代序列iterables中的每個(gè)元素依次代入函數(shù)或匿名函數(shù)func中執(zhí)行,然后把各返回值結(jié)果封裝成filter對(duì)象返回??蛇M(jìn)一步通過列表或元組等形式查看該對(duì)象中包含的數(shù)據(jù)內(nèi)容。filter函數(shù)的形參func通常返回True或False?!景咐縧ambda與reducereduce函數(shù)定義格式為:reduce(func,sequence[,initial])【功能描述】其中,initial為可選參數(shù),表示初值,求和默認(rèn)值為0,求積默認(rèn)值為
1,也可顯式指定為其他值?!景咐?】求和運(yùn)算,分析以下程序,輸出運(yùn)行結(jié)果?!痉治觥縭educe函數(shù)通過lambdax,y:x+y將列表[1,2,3,4,5]中的元素從左至右依次累加,最終得到總和15。lambda與reduce【案例2】求積運(yùn)算,分析以下程序,輸出運(yùn)行結(jié)果?!痉治觥棵看握{(diào)用`lambdax,y:x*y`
需要兩個(gè)參數(shù),分析過程同求和,依次執(zhí)行以下運(yùn)算:1*2=2,2*3=6,6*4=24,24*5=120。求積運(yùn)算的初始值initial默認(rèn)為1,也可顯式指定。PartFive項(xiàng)目實(shí)施項(xiàng)目實(shí)施init函數(shù)用于打印系統(tǒng)初始化時(shí)的信息,包括銀行可辦理的業(yè)務(wù)列表。deposit函數(shù)實(shí)現(xiàn)存款功能。使用global關(guān)鍵字修改全局變量money的值。存款金額小于0,則提示錯(cuò)誤;否則,增加賬戶余額,并打印存款和當(dāng)前余額信息。withdraw函數(shù)實(shí)現(xiàn)了取款功能。同樣使用global關(guān)鍵字來修改money。若取款金額小于0或大于賬戶余額,則打印相應(yīng)的錯(cuò)誤信息;否則,減少賬戶余額,并打印取款和當(dāng)前余額信息。項(xiàng)目實(shí)施check函數(shù)用于查詢當(dāng)前賬戶余額,并打印出來。main函數(shù)是程序的主要入口點(diǎn)。它調(diào)用init函數(shù),進(jìn)入一個(gè)無限循環(huán),不斷提示用戶輸入業(yè)務(wù)代碼。根據(jù)用戶輸入的代碼,調(diào)用相應(yīng)函數(shù)來處理請(qǐng)求。若輸入'q',則打印退出信息并退出循環(huán),結(jié)束程序。PartSix項(xiàng)目小結(jié)主要知識(shí)點(diǎn)知
識(shí)
點(diǎn)示例說
明函數(shù)定義定義求兩數(shù)之和的函數(shù)defadd(a,b):#函數(shù)頭
return(a+b)#函數(shù)體函數(shù)包含函數(shù)頭和函數(shù)體。函數(shù)頭由關(guān)鍵字def、函數(shù)名、參數(shù)表和冒號(hào)組成。函數(shù)定義時(shí)的參數(shù)稱為形參,如a和b函數(shù)調(diào)用s=add(2,3)函數(shù)調(diào)用“喊名字,傳參數(shù)”,函數(shù)調(diào)用時(shí)傳遞的參數(shù)稱為實(shí)參,如2和3字典字典名={key1:value1,5…,keyn:valuen}由若干鍵值對(duì)key:value構(gòu)成變量的作用域a=2#全局變量,其值為2defchange():
a=10#局部變量,其值為10
print('a=',a)#訪問局部變量change()#輸出a=10該例中定義了同名的不同變量a,一個(gè)是全局變量,一個(gè)為局部變量global引入全局變量a=2#全局變量,其值為2defchange():
globala#引入全局變量
a=10#為全局變量賦值10
print('a=',a)#全局變量change()#輸出a=10該例中僅定義了一個(gè)變量即全局變量a,使用global關(guān)鍵字在局部空間引入該全局變量易錯(cuò)知識(shí)點(diǎn)易錯(cuò)知識(shí)點(diǎn)錯(cuò)誤示例說明函數(shù)定義錯(cuò)誤deffun(n)
#函數(shù)體語法錯(cuò)誤。函數(shù)頭尾部漏掉冒號(hào):帶參函數(shù)定義defprint_info(age=17,name):
#函數(shù)體帶默認(rèn)值的參數(shù)必須放在所有非默認(rèn)值參數(shù)后面易錯(cuò)知識(shí)點(diǎn)THANKS!項(xiàng)目六烏龜吃魚游戲——面向?qū)ο髏extbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項(xiàng)目描述【項(xiàng)目描述】模擬烏龜吃魚游戲,游戲規(guī)則:水池中有一只烏龜和若干條魚,烏龜和魚在水池中游動(dòng),如果烏龜遇到魚則把魚吃掉,生命值增加,烏龜游動(dòng)消耗體力。如果池中所有的魚都被吃掉或者烏龜體力耗盡游戲結(jié)束。Contents目錄01.聰明的小狗——類和對(duì)象04.愛心募捐——實(shí)例變量和類變量02.莫問年齡和存款——私有成員03.生物進(jìn)化——繼承05.項(xiàng)目實(shí)施06.項(xiàng)目小結(jié)PartOne聰明的小狗——類和對(duì)象掌握類定義結(jié)構(gòu)掌握構(gòu)造對(duì)象的方法掌握通過對(duì)象名調(diào)用屬性和行為的方式任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)狗類,包含名字、品種、年齡等屬性,具備搖尾、趴下、打滾、奔跑等行為。運(yùn)行結(jié)果如下所示。讓我們一起學(xué)習(xí)類和對(duì)象來解決這個(gè)問題吧!面向?qū)ο蠛皖?1面向?qū)ο缶幊蘋OP是一切皆對(duì)象,把具有相同屬性和行為的對(duì)象抽象為“類”。02面向?qū)ο笕筇匦詾榉庋b、繼承和多態(tài)。03類是編程中創(chuàng)建對(duì)象的模板,用class定義,擁有屬性存儲(chǔ)信息和方法執(zhí)行操作。面向?qū)ο蠛皖悺绢惗x格式1】含構(gòu)造方法【類定義格式2】不含構(gòu)造方法,系統(tǒng)提供默認(rèn)的無參構(gòu)造方法【說明】在Python中,構(gòu)造方法`__init__`用于初始化新創(chuàng)建的對(duì)象,為其屬性賦初值。如果沒有顯式定義構(gòu)造方法(僅含有self)。析構(gòu)方法`__del__`在對(duì)象被刪除時(shí)自動(dòng)調(diào)用。類中的方法通常以`self`作為第一個(gè)參數(shù),代表當(dāng)前對(duì)象實(shí)例,其余參數(shù)根據(jù)需要定義。下面,我們來舉幾個(gè)例子幫助大家更好理解面向?qū)ο蠛皖悺景咐?】定義一個(gè)學(xué)生類,包括姓名、年齡、班級(jí)等屬性,以及自我介紹方法。【案例2】定義一個(gè)鳥類Bird,僅包含飛行方法,不含構(gòu)造方法。創(chuàng)建對(duì)象構(gòu)造類的對(duì)象時(shí),通過類的名字調(diào)用構(gòu)造方法__init__,為該對(duì)象的數(shù)據(jù)成員即屬性賦初值。如果類中沒有顯式定義構(gòu)造方法或者定義的構(gòu)造方法除了self外,沒有其他參數(shù),則創(chuàng)建該類對(duì)象的格式如下:舉例:在這個(gè)例子中,Bird類沒有定義構(gòu)造方法,因此Python自動(dòng)提供了一個(gè)默認(rèn)的無參構(gòu)造方法。當(dāng)我們創(chuàng)建Bird類的對(duì)象b時(shí),我們使用Bird(),括號(hào)內(nèi)是空的,表示沒有傳遞任何參數(shù)。然后我們可以調(diào)用b對(duì)象的fly方法來模擬鳥的飛行行為。創(chuàng)建對(duì)象若類中定義的構(gòu)造方法除了self外還有其他參數(shù),則創(chuàng)建該類對(duì)象格式如下:舉例:在這個(gè)例子中,Student類有一個(gè)構(gòu)造方法__init__,它接受三個(gè)參數(shù):name、age和class_info。創(chuàng)建Student類的對(duì)象s1和s2時(shí),需要提供這些參數(shù)的值。然后,我們可以通過調(diào)用introduce方法來打印每個(gè)學(xué)生的信息。通過對(duì)象訪問屬性和行為訪問對(duì)象屬性的格式如下:舉例:在這個(gè)例子中,Student類有三個(gè)屬性:name、age和cls。我們創(chuàng)建了兩個(gè)Student類的對(duì)象s1和s2,并且為它們的屬性賦了初值。然后,我們通過點(diǎn)操作符訪問這些屬性,并使用print函數(shù)輸出它們的值。通過對(duì)象訪問屬性和行為訪問對(duì)象行為的格式如下:舉例:在這個(gè)例子中,我們定義了一個(gè)Student類,它有一個(gè)構(gòu)造方法和一個(gè)introduce方法。我們創(chuàng)建了一個(gè)Student對(duì)象student,并調(diào)用了它的introduce方法來打印自我介紹。任務(wù)實(shí)施__init__是類的構(gòu)造方法,用于初始化創(chuàng)建的對(duì)象。它接受breed(品種)、name(名字)和age(年齡)作為參數(shù),并將它們?cè)O(shè)置為對(duì)象的屬性。speak方法用于模擬小狗的自我介紹,打印出小狗的品種、名字和年齡。wag方法模擬小狗搖尾巴的動(dòng)作,打印出搖尾巴的小狗的名字。lie方法模擬小狗趴下的動(dòng)作,打印出趴下的小狗的名字。roll_over方法模擬小狗打滾的動(dòng)作,打印出打滾的小狗的名字。run方法模擬小狗跑步的動(dòng)作,參數(shù)dis表示距離(米),并打印出小狗的名字和跑的距離。任務(wù)實(shí)施創(chuàng)建了兩個(gè)Dog類的對(duì)象dog1和dog2,分別代表兩個(gè)不同品種和名字的小狗,以及它們的年齡。調(diào)用各類方法運(yùn)行結(jié)果如下:鞏固案例【案例】定義一個(gè)圓類,包含屬性半徑,及求周長(zhǎng)和面積的方法。參考代碼:PartTwo莫問年齡和存款——私有成員任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)Python個(gè)人信息類。創(chuàng)建一個(gè)Person類,封裝姓名、私有的年齡、分?jǐn)?shù)和存款。實(shí)現(xiàn)方法以輸出個(gè)人信息、安全地獲取和設(shè)置分?jǐn)?shù)、以及模擬賺錢和花錢。在主程序中演示這些功能。讓我們一起學(xué)習(xí)一下私有成員屬性來完成這個(gè)任務(wù)吧!私有成員屬性Python類中的屬性默認(rèn)是公開的,可以自由訪問和修改,這可能違反封裝原則并降低安全性。為了提供封裝和數(shù)據(jù)保護(hù),Python使用雙下劃線`__`前綴來定義私有屬性,如`__weight`和`__score`。私有屬性只能在類內(nèi)部訪問,外部代碼不能直接訪問它們。通常,類會(huì)提供公共的`get_屬性名`和`set_屬性名`方法來間接訪問和修改這些私有屬性?!惧e(cuò)誤案例】試圖在類外直接訪問私有成員屬性。私有成員屬性【正確案例】通過set***和get***方法可在類外間接訪問私有屬性。定義了一個(gè)公開方法getWeight,用于獲取私有屬性__weight的值。定義了一個(gè)公開方法setWeight,它接受一個(gè)參數(shù)newWeight,用于設(shè)置私有屬性__weight的新值。newWeight將傳入的newWeight值賦給私有屬性__weight。調(diào)用setWeight方法,將體重修改為59.5公斤。任務(wù)實(shí)施__init__是構(gòu)造方法,初始化Person對(duì)象的屬性。接受姓名、年齡、分?jǐn)?shù)和金錢作為參數(shù),并將它們?cè)O(shè)置為對(duì)象的屬性。其中,年齡、分?jǐn)?shù)和金錢屬性名前使用了雙下劃線__,這表示它們是私有屬性。speak方法用于打印出人的姓名、年齡、分?jǐn)?shù)和余額。返回私有屬性__age的值和私有屬性__score的值。setSc方法接受一個(gè)新分?jǐn)?shù)newSc,先打印出修改前的成績(jī),然后更新成績(jī),并打印出修改后的成績(jī)。任務(wù)實(shí)施spend方法接受一個(gè)金額amount,將其從余額中減去,并打印出花錢后的信息和當(dāng)前余額。運(yùn)行結(jié)果如下:PartThree生物進(jìn)化——繼承掌握類的定義結(jié)構(gòu)掌握構(gòu)造對(duì)象的方法掌握通過對(duì)象名調(diào)用屬性和行為的方式單繼承單類繼承的格式為:pass表示占位符,通常表示暫時(shí)沒實(shí)現(xiàn)的函數(shù)(方法)體或類體。子類默認(rèn)繼承父類的非私有屬性和方法。直接調(diào)用從父類繼承過來的方法為不重寫父類方法—直接繼承單繼承在子類中重寫父類中的同名方法,相當(dāng)于把從父類繼承過來的該方法覆蓋掉。該方法為重寫父類方法—方法覆蓋運(yùn)行結(jié)果為:多重繼承多重繼承是子類擁有多個(gè)父類,可同時(shí)繼承多個(gè)父類的屬性和方法。其格式為:【案例】閱讀以下程序,分析其運(yùn)行結(jié)果?!痉治觥孔宇怱wan擁有兩個(gè)父類Bird和Goose,即同時(shí)繼承了父類Bird的fly方法,以及父類Goose的swim方法。【說明】多個(gè)父類名用逗號(hào)間隔,表示子類同時(shí)繼承多個(gè)父類的屬性和方法。PartFour愛心募捐——實(shí)例變量和類變量掌握實(shí)例變量的定義和使用掌握類變量的定義和使用任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)募捐類,統(tǒng)計(jì)輸出實(shí)時(shí)捐款金額和明細(xì)。該項(xiàng)任務(wù)涉及實(shí)例變量和類變量。實(shí)例變量就是屬于對(duì)象(實(shí)例)的變量(屬性),每個(gè)對(duì)象均有屬于自己的獨(dú)立實(shí)例變量。而類變量屬于整個(gè)類的所有對(duì)象所共有,即“公共空間”。相信同學(xué)們對(duì)于什么是實(shí)例變量和類變量還是一頭霧水,讓我們一起進(jìn)入實(shí)例變量和類變量的學(xué)習(xí)中吧!實(shí)例變量實(shí)例變量是指在類的任意方法內(nèi)部,以self開頭定義的變量(屬性)。實(shí)例變量定義self.變量名語法格式實(shí)例變量只能通過對(duì)象名訪問,不能通過類名訪問。訪問方式
實(shí)例變量【案例】閱讀以下代碼,分析其中的實(shí)例變量。【分析】在類中的任意方法內(nèi)以“self.變量名”定義和使用的變量均為“實(shí)例變量”,故該類構(gòu)造方法中的、self.age、self.__score這三個(gè)以self開頭的變量均是實(shí)例變量。運(yùn)行結(jié)果展示了同一個(gè)類`Stu`的不同對(duì)象`s1`和`s2`各自擁有獨(dú)立的私有實(shí)例變量`self.__score`。它們是各自獨(dú)立、互不影響的,即都有自己的獨(dú)立存儲(chǔ)空間和值。類變量是指在類的所有方法之外定義的變量。定義01語法格式02類變量既可以通過類名訪問,也可以通過對(duì)象名訪問,建議通過類名訪問訪問方式03類變量類變量【案例】閱讀以下代碼,分析其中的類變量和實(shí)例變量。這段代碼中的`Rect`類展示了類變量和實(shí)例變量的區(qū)別:`cnt`是類變量,用于統(tǒng)計(jì)創(chuàng)建的`Rect`對(duì)象數(shù)量,所有對(duì)象共享;而`self.w`和`self.h`是實(shí)例變量,每個(gè)`Rect`對(duì)象擁有獨(dú)立的寬度和高度值。通過類名或?qū)ο竺L問類變量`cnt`,可以獲取創(chuàng)建對(duì)象的總數(shù)。str.center的使用字符串center方法返回指定總寬度width且居中的字符串,fillchar為填充字符,默認(rèn)為空格。調(diào)用格式為:【案例1】字符串內(nèi)容(如“歡迎光臨”)為偶數(shù)(4)位,輸出總位寬為(11),其余填充符7(奇數(shù))位,則左邊多1個(gè)填充符。運(yùn)行結(jié)果如下:str.center的使用【案例2】字符串內(nèi)容(如“南京歡迎您”)為奇數(shù)(5)位,輸出總位寬(12),其余填充符7(奇數(shù))位,則右邊多1個(gè)填充符。這兩個(gè)案例說明了如果填充字符的總數(shù)是奇數(shù),center()會(huì)在兩邊分配填充字符,但會(huì)多放一個(gè)在一側(cè),以確保字符串在中間。哪一側(cè)更長(zhǎng)取決于總寬度和字符串長(zhǎng)度的差值。如果填充字符的總數(shù)是偶數(shù),則兩側(cè)分配的填充字符數(shù)量相等。運(yùn)行結(jié)果如下:任務(wù)實(shí)施運(yùn)行結(jié)果如下:在循環(huán)內(nèi)部,為每個(gè)捐款者創(chuàng)建一個(gè)Donate類的實(shí)例。調(diào)用每個(gè)捐款者實(shí)例的donate方法,傳入隨機(jī)生成的捐款金額,更新捐款總額。donate方法接受一個(gè)參數(shù)num(捐款金額),并將其加到類變量total上,從而更新捐款總額。PartFive項(xiàng)目實(shí)施項(xiàng)目實(shí)施swim方法讓動(dòng)物在其邊界內(nèi)隨機(jī)移動(dòng),如果碰到邊界會(huì)反彈,并且每次移動(dòng)會(huì)消耗動(dòng)物的體力。項(xiàng)目實(shí)施Turtle類繼承自Animal類,表示烏龜,并添加了特有的eat方法來模擬烏龜吃魚后體力的增加,但不超過100。Fish類繼承自Animal類,表示魚,并添加了特有的bubble方法來模擬魚吐泡泡的動(dòng)作。創(chuàng)建了一只烏龜和10條魚,并將魚存儲(chǔ)在列表fish_ls中。項(xiàng)目實(shí)施如果魚和烏龜在同一位置,烏龜會(huì)吃掉魚,并從魚的列表中移除該魚。項(xiàng)目實(shí)施運(yùn)行結(jié)果如下:PartSix項(xiàng)目小結(jié)項(xiàng)目小結(jié)主要知識(shí)點(diǎn)面向?qū)ο笕筇匦詾椋悍庋b、繼承、多態(tài)。類的構(gòu)造方法是在創(chuàng)建對(duì)象時(shí)調(diào)用,注意其方法名前后均有兩個(gè)下畫線__init__。類的私有成員變量前有兩個(gè)下畫線,如__age、__money等,在類外不能直接訪問私有成員變量。通常提供get***和set***方法獲取或修改私有成員變量的值。類的繼承分單繼承和多繼承,其主要為提高代碼的復(fù)用率。子類默認(rèn)繼承父類的非私有屬性和方法。THANKS!項(xiàng)目七能否構(gòu)成三角形——異常處理textbook教材Python程序設(shè)計(jì)項(xiàng)目化教程孫海洋
編著
電子工業(yè)出版社ISBN:9787121477546項(xiàng)目描述【項(xiàng)目描述】自定義一個(gè)三角形異常類,當(dāng)用戶傳入三個(gè)數(shù)據(jù)構(gòu)造一個(gè)三角形對(duì)象前,先判斷是否滿足三角形邊長(zhǎng)關(guān)系,如果不滿足,則拋出異常,并提示用戶重新輸入;若滿足,則構(gòu)造該三角形對(duì)象,計(jì)算并輸出其面積。Contents目錄01.除數(shù)為零的煩惱——初識(shí)異常02.輸入到滿意為止——異常處理03.圓半徑不能為負(fù)——自定義異常04.項(xiàng)目實(shí)施05.項(xiàng)目小結(jié)PartOne除數(shù)為零的煩惱——初識(shí)異常了解算法的概念了解算法的性質(zhì)和目標(biāo)了解異常的概念任務(wù)描述【任務(wù)描述】小明要設(shè)計(jì)一個(gè)簡(jiǎn)易計(jì)算器。幫其設(shè)計(jì)一個(gè)除法運(yùn)算函數(shù),并用測(cè)試用例驗(yàn)證該函數(shù)的正確性及健壯性。算法?錯(cuò)誤?異常?算法性質(zhì)和目標(biāo)算法:解決問題的方法、步驟的集合算法性質(zhì):有輸入、輸出、有限、確定和可執(zhí)行5個(gè)性質(zhì)算法目標(biāo):算法的正確性、可讀性、健壯性、高時(shí)間效率和高空間效率等幾大追求目標(biāo)算法性質(zhì)和目標(biāo)錯(cuò)誤和異常程序中的錯(cuò)誤可以分為兩類:一類是外部因素(如硬件、操作系統(tǒng))引起的“非正?!鼻闆r;另一類是Python語法錯(cuò)誤,導(dǎo)致程序無法執(zhí)行。而程序執(zhí)行中因算法、編程或用戶輸入等問題導(dǎo)致的“非正常”情況,被稱為異常。錯(cuò)誤和異常常見異常類型1.類型異常運(yùn)行結(jié)果:【異常原因】+運(yùn)算符不能連接字符串和數(shù)值。2.值異常運(yùn)行結(jié)果:【異常原因】如果用戶無意中輸入非整數(shù)值,如浮點(diǎn)數(shù)3.14或字符串hello,則均會(huì)拋出如下異常。常見異常類型3.名稱異常運(yùn)行結(jié)果:【異常原因】解釋器不理解c的含義,提示
c未定義。4.文件找不到異常運(yùn)行結(jié)果:【異常原因】若上述文件路徑不存在,則會(huì)拋出如下異常。常見異常類型5.索引異常運(yùn)行結(jié)果:【異常原因】列表ls含4個(gè)元素,下標(biāo)索引從0~3,故ls[4]下標(biāo)越界。6.語法錯(cuò)誤(強(qiáng)類型異常)運(yùn)行結(jié)果:【異常原因】】字符串“'hello'”的右引號(hào)錯(cuò)誤寫為中文符號(hào)常見異常類型7.縮進(jìn)異常(強(qiáng)類型異常)運(yùn)行結(jié)果:【異常原因】Python是使用縮進(jìn)來標(biāo)識(shí)代碼塊和代碼邏輯的。示例代碼中的4行代碼應(yīng)縮進(jìn)一致。任務(wù)實(shí)施運(yùn)行結(jié)果如下:【分析】程序打印前五個(gè)測(cè)試用例的結(jié)果。當(dāng)執(zhí)行到第六個(gè)用例時(shí),由于除數(shù)為零,程序拋出ZeroDivisionError異常,并顯示錯(cuò)誤信息和堆棧跟蹤。PartTwo輸入到滿意為止——異常處理掌握異常處理的關(guān)鍵詞掌握異常處理的結(jié)構(gòu)任務(wù)描述【任務(wù)描述】設(shè)計(jì)一個(gè)除法程序,要求用戶從鍵盤輸入兩個(gè)數(shù)值,如果輸入合法,則計(jì)算并輸出兩數(shù)相除的結(jié)果。當(dāng)輸入了非數(shù)據(jù),如字符串?dāng)?shù)據(jù),或除數(shù)為0的情況,程序應(yīng)該能夠給出相應(yīng)提示信息,而不至于程序崩潰。了解了常見的異常類型后,我們來學(xué)習(xí)異常處理的基礎(chǔ)知識(shí)來完成該任務(wù)吧!異常處理結(jié)構(gòu)及流程1.try-except異常處理結(jié)構(gòu)【執(zhí)行流程】:使用try關(guān)鍵詞監(jiān)控代碼塊,一旦代碼塊執(zhí)行過程中拋出異常,就檢查異常類型。若異常類型與except后指定的類型相匹配,則執(zhí)行對(duì)應(yīng)的異常處理;若不匹配,則無法捕獲異常,程序終止執(zhí)行。2.try-except-else結(jié)構(gòu)【執(zhí)行流程】程序先嘗試執(zhí)行try代碼塊,若無異常則執(zhí)行else部分;若拋出異常,則檢查異常類型,若與except后列出的任一異常類型匹配,則執(zhí)行異常處理;若不匹配,則程序通常終止執(zhí)行。異常處理結(jié)構(gòu)及流程3.try-exc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年2026年汽車電子系統(tǒng)維修合同
- 二手車買賣合同協(xié)議2026年違約處理
- 2026年APP上線服務(wù)合同協(xié)議
- 網(wǎng)絡(luò)服務(wù)合同2026年廣告服務(wù)協(xié)議
- 2026年住宅房屋轉(zhuǎn)租合同
- 借款合同2026年提前還款約定
- 家裝項(xiàng)目經(jīng)理培訓(xùn)課件
- 2026年國(guó)際展會(huì)展覽服務(wù)合同
- 2026年餐飲培訓(xùn)考核合同協(xié)議
- 2026年薪資延期合同
- 主管護(hù)師聘任述職報(bào)告
- 鋼筋混凝土結(jié)構(gòu)課程設(shè)計(jì)計(jì)算書
- 內(nèi)蒙古中考數(shù)學(xué)三年(2023-2025)真題分類匯編:專題02 幾何初步、相交線與平行線、概率與統(tǒng)計(jì)(解析版)
- 云南省2025年高二上學(xué)期普通高中學(xué)業(yè)水平合格性考試《信息技術(shù)》試卷(解析版)
- 產(chǎn)品知識(shí)培訓(xùn)會(huì)議總結(jié)
- 眼科進(jìn)修結(jié)業(yè)匯報(bào)
- 專題11 圓(安徽專用)5年(2021-2025)中考1年模擬《數(shù)學(xué)》真題分類匯編
- 骨折后肢體腫脹課件
- 工程春節(jié)停復(fù)工方案(3篇)
- 社區(qū)基金使用管理辦法
- 美團(tuán)充電寶分成協(xié)議合同
評(píng)論
0/150
提交評(píng)論