Python程序設(shè)計項目化教程- 課件 項目七 能否構(gòu)成三角形-異常處理_第1頁
Python程序設(shè)計項目化教程- 課件 項目七 能否構(gòu)成三角形-異常處理_第2頁
Python程序設(shè)計項目化教程- 課件 項目七 能否構(gòu)成三角形-異常處理_第3頁
Python程序設(shè)計項目化教程- 課件 項目七 能否構(gòu)成三角形-異常處理_第4頁
Python程序設(shè)計項目化教程- 課件 項目七 能否構(gòu)成三角形-異常處理_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目七能否構(gòu)成三角形——異常處理textbook教材Python程序設(shè)計項目化教程孫海洋

編著

電子工業(yè)出版社ISBN:9787121477546項目描述【項目描述】自定義一個三角形異常類,當(dāng)用戶傳入三個數(shù)據(jù)構(gòu)造一個三角形對象前,先判斷是否滿足三角形邊長關(guān)系,如果不滿足,則拋出異常,并提示用戶重新輸入;若滿足,則構(gòu)造該三角形對象,計算并輸出其面積。Contents目錄01.除數(shù)為零的煩惱——初識異常02.輸入到滿意為止——異常處理03.圓半徑不能為負(fù)——自定義異常04.項目實施05.項目小結(jié)PartOne除數(shù)為零的煩惱——初識異常了解算法的概念了解算法的性質(zhì)和目標(biāo)了解異常的概念任務(wù)描述【任務(wù)描述】小明要設(shè)計一個簡易計算器。幫其設(shè)計一個除法運算函數(shù),并用測試用例驗證該函數(shù)的正確性及健壯性。算法?錯誤?異常?算法性質(zhì)和目標(biāo)算法:解決問題的方法、步驟的集合算法性質(zhì):有輸入、輸出、有限、確定和可執(zhí)行5個性質(zhì)算法目標(biāo):算法的正確性、可讀性、健壯性、高時間效率和高空間效率等幾大追求目標(biāo)算法性質(zhì)和目標(biāo)錯誤和異常程序中的錯誤可以分為兩類:一類是外部因素(如硬件、操作系統(tǒng))引起的“非正常”情況;另一類是Python語法錯誤,導(dǎo)致程序無法執(zhí)行。而程序執(zhí)行中因算法、編程或用戶輸入等問題導(dǎo)致的“非正?!鼻闆r,被稱為異常。錯誤和異常常見異常類型1.類型異常運行結(jié)果:【異常原因】+運算符不能連接字符串和數(shù)值。2.值異常運行結(jié)果:【異常原因】如果用戶無意中輸入非整數(shù)值,如浮點數(shù)3.14或字符串hello,則均會拋出如下異常。常見異常類型3.名稱異常運行結(jié)果:【異常原因】解釋器不理解c的含義,提示

c未定義。4.文件找不到異常運行結(jié)果:【異常原因】若上述文件路徑不存在,則會拋出如下異常。常見異常類型5.索引異常運行結(jié)果:【異常原因】列表ls含4個元素,下標(biāo)索引從0~3,故ls[4]下標(biāo)越界。6.語法錯誤(強類型異常)運行結(jié)果:【異常原因】】字符串“'hello'”的右引號錯誤寫為中文符號常見異常類型7.縮進異常(強類型異常)運行結(jié)果:【異常原因】Python是使用縮進來標(biāo)識代碼塊和代碼邏輯的。示例代碼中的4行代碼應(yīng)縮進一致。任務(wù)實施運行結(jié)果如下:【分析】程序打印前五個測試用例的結(jié)果。當(dāng)執(zhí)行到第六個用例時,由于除數(shù)為零,程序拋出ZeroDivisionError異常,并顯示錯誤信息和堆棧跟蹤。PartTwo輸入到滿意為止——異常處理掌握異常處理的關(guān)鍵詞掌握異常處理的結(jié)構(gòu)任務(wù)描述【任務(wù)描述】設(shè)計一個除法程序,要求用戶從鍵盤輸入兩個數(shù)值,如果輸入合法,則計算并輸出兩數(shù)相除的結(jié)果。當(dāng)輸入了非數(shù)據(jù),如字符串?dāng)?shù)據(jù),或除數(shù)為0的情況,程序應(yīng)該能夠給出相應(yīng)提示信息,而不至于程序崩潰。了解了常見的異常類型后,我們來學(xué)習(xí)異常處理的基礎(chǔ)知識來完成該任務(wù)吧!異常處理結(jié)構(gòu)及流程1.try-except異常處理結(jié)構(gòu)【執(zhí)行流程】:使用try關(guān)鍵詞監(jiān)控代碼塊,一旦代碼塊執(zhí)行過程中拋出異常,就檢查異常類型。若異常類型與except后指定的類型相匹配,則執(zhí)行對應(yīng)的異常處理;若不匹配,則無法捕獲異常,程序終止執(zhí)行。2.try-except-else結(jié)構(gòu)【執(zhí)行流程】程序先嘗試執(zhí)行try代碼塊,若無異常則執(zhí)行else部分;若拋出異常,則檢查異常類型,若與except后列出的任一異常類型匹配,則執(zhí)行異常處理;若不匹配,則程序通常終止執(zhí)行。異常處理結(jié)構(gòu)及流程3.try-except-finally異常處理結(jié)構(gòu)【說明】無論有沒有異常,都要執(zhí)行finally部分的代碼。異常處理結(jié)構(gòu)及流程分析下圖代碼【執(zhí)行流程】程序進入無限循環(huán),嘗試接收用戶輸入的兩個整數(shù)并進行除法運算。若運算過程中未發(fā)生異常,則打印運算結(jié)果并恭喜用戶,隨后退出循環(huán)。若發(fā)生除以零的異常,則捕獲該異常并打印錯誤消息。無論是否發(fā)生異常,程序都會執(zhí)行finally塊中的代碼,打印鼓勵消息和分隔線,然后繼續(xù)下一次循環(huán)(除非已經(jīng)通過break語句退出)。斷言assertassert表達(dá)式斷言格式案例分析斷言通常以關(guān)鍵字assert開頭,后面跟著一個布爾表達(dá)式,如果表達(dá)式為真,則斷言通過,否則拋出異常AssertionError。斷言的語法斷言assert分析下圖代碼:這個斷言檢查name參數(shù)的類型是否為字符串(str)。如果不是字符串,程序?qū)伋鲆粋€AssertionError異常。這個斷言檢查age參數(shù)的類型是否為整數(shù)(int)。如果不是整數(shù),程序?qū)伋鲆粋€AssertionError異常。這個斷言首先檢查sc參數(shù)的類型是否為整數(shù)(int)。然后,它檢查sc的值是否在0到100的范圍內(nèi)。如果sc的類型不是整數(shù)或者其值不在指定范圍內(nèi),程序?qū)伋霎惓!sserttype(age)isint拋出異常任務(wù)實施運行結(jié)果如下:如果y為0,引發(fā)ZeroDivisionError異常。捕獲異常打印錯誤信息。如果用戶輸入的不是整數(shù),eval函數(shù)將引發(fā)ValueError異常。NameError異常在訪問一個未定義的變量時引發(fā)。PartThree圓半徑不能為負(fù)——自定義異常掌握自定義異常類的結(jié)構(gòu)能夠使用自定義異常處理實際問題try:

語句塊

raise自定義異常類對象except自定義異常類名ase:

異常處理預(yù)定義異常(如NameError等)能自動拋出,可用except捕獲。而自定義異常需用raise拋出,然后才能捕獲處理。class異常類(Exception):

#構(gòu)造方法__init__

#對象描述方法__str__

#其他方法自定義異常類格式raise主動拋出異常自定義異常捕獲結(jié)構(gòu)自定義異常任務(wù)實施【任務(wù)描述】設(shè)計一個圓類,要求用戶從鍵盤輸入圓半徑,如果輸入半徑為正,則創(chuàng)建該圓對象,并輸出該圓的周長和面積;如果輸入半徑值為負(fù),則拋出異常,不創(chuàng)建該圓對象,并提示用戶相應(yīng)信息。分析1:這段代碼定義了一個名為CircleException的自定義異常類,用于處理圓的半徑不滿足大于0的情況。它繼承自Python的Exception類,并通過重寫__init__和__str__方法,實現(xiàn)了對異常信息的初始化和自定義描述。當(dāng)圓的半徑不符合要求時,可以拋出CircleException異常,以清晰地表達(dá)程序中出現(xiàn)的特定錯誤。自定義異常處理分析2:這段代碼定義了一個名為Circle的類,用于表示圓及其相關(guān)操作。它包含三個方法:__init__用于初始化圓的半徑,如果半徑小于或等于0,則拋出CircleException異常;getArea用于計算并返回圓的面積;getLen用于計算并返回圓的周長。該類通過與math模塊中的pi常量結(jié)合,實現(xiàn)了對圓的基本屬性和行為的封裝。自定義異常處理分析3:主程序部分提示用戶輸入圓的半徑,嘗試創(chuàng)建Circle類實例。若半徑有效,則打印半徑、面積和周長;若半徑無效,則捕獲并打印CircleException異常信息。整合并運行:半徑為負(fù),拋出異常。合法半徑,正常創(chuàng)建圓對象,輸出面積和周長。PartFour項目實施項目實施定義了自定義異常TriangleException,用于當(dāng)三條邊長不能構(gòu)成三角形時拋出。a、b和c三個屬性表示存儲邊長,__str__方法用于返回異常的字符串表示。定義了Triangle類,構(gòu)造方法接受三個參數(shù)。若邊長不符合三角形的構(gòu)成條件,將拋出定義的TriangleException異常。如果邊長有效,則將它們存儲為實例變量。程序主入口,使用try-except塊來捕獲發(fā)生的TriangleException異常。用戶輸入三條邊長,如果它們能構(gòu)成三角形,則創(chuàng)建Triangle對象并計算面積,否則打印出異常信息。項目實施【運行結(jié)果1】【運行結(jié)果3】【運行結(jié)果2】PartFive項目小結(jié)項目總結(jié)異常處理主要知識點算法的概念。算法的性質(zhì):輸入、輸出、有限、確定和可執(zhí)行性。算法的目標(biāo):正確性、可讀性、健壯性、高時間效率和高空間效率等。異常和錯誤的區(qū)別。常見的異常類:類型異常TypeError、值異常ValueError、名稱異常NameError、文件找不到異常FileNotFoundError、索引異常IndexError、零除異常ZeroDivisionError等。掌握異常處理try-ex

溫馨提示

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

評論

0/150

提交評論