




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目七能否構成三角形——異常處理textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546項目描述【項目描述】自定義一個三角形異常類,當用戶傳入三個數據構造一個三角形對象前,先判斷是否滿足三角形邊長關系,如果不滿足,則拋出異常,并提示用戶重新輸入;若滿足,則構造該三角形對象,計算并輸出其面積。Contents目錄01.除數為零的煩惱——初識異常02.輸入到滿意為止——異常處理03.圓半徑不能為負——自定義異常04.項目實施05.項目小結PartOne除數為零的煩惱——初識異常了解算法的概念了解算法的性質和目標了解異常的概念任務描述【任務描述】小明要設計一個簡易計算器。幫其設計一個除法運算函數,并用測試用例驗證該函數的正確性及健壯性。算法?錯誤?異常?算法性質和目標算法:解決問題的方法、步驟的集合算法性質:有輸入、輸出、有限、確定和可執行5個性質算法目標:算法的正確性、可讀性、健壯性、高時間效率和高空間效率等幾大追求目標算法性質和目標錯誤和異常程序中的錯誤可以分為兩類:一類是外部因素(如硬件、操作系統)引起的“非正常”情況;另一類是Python語法錯誤,導致程序無法執行。而程序執行中因算法、編程或用戶輸入等問題導致的“非正常”情況,被稱為異常。錯誤和異常常見異常類型1.類型異常運行結果:【異常原因】+運算符不能連接字符串和數值。2.值異常運行結果:【異常原因】如果用戶無意中輸入非整數值,如浮點數3.14或字符串hello,則均會拋出如下異常。常見異常類型3.名稱異常運行結果:【異常原因】解釋器不理解c的含義,提示
c未定義。4.文件找不到異常運行結果:【異常原因】若上述文件路徑不存在,則會拋出如下異常。常見異常類型5.索引異常運行結果:【異常原因】列表ls含4個元素,下標索引從0~3,故ls[4]下標越界。6.語法錯誤(強類型異常)運行結果:【異常原因】】字符串“'hello'”的右引號錯誤寫為中文符號常見異常類型7.縮進異常(強類型異常)運行結果:【異常原因】Python是使用縮進來標識代碼塊和代碼邏輯的。示例代碼中的4行代碼應縮進一致。任務實施運行結果如下:【分析】程序打印前五個測試用例的結果。當執行到第六個用例時,由于除數為零,程序拋出ZeroDivisionError異常,并顯示錯誤信息和堆棧跟蹤。PartTwo輸入到滿意為止——異常處理掌握異常處理的關鍵詞掌握異常處理的結構任務描述【任務描述】設計一個除法程序,要求用戶從鍵盤輸入兩個數值,如果輸入合法,則計算并輸出兩數相除的結果。當輸入了非數據,如字符串數據,或除數為0的情況,程序應該能夠給出相應提示信息,而不至于程序崩潰。了解了常見的異常類型后,我們來學習異常處理的基礎知識來完成該任務吧!異常處理結構及流程1.try-except異常處理結構【執行流程】:使用try關鍵詞監控代碼塊,一旦代碼塊執行過程中拋出異常,就檢查異常類型。若異常類型與except后指定的類型相匹配,則執行對應的異常處理;若不匹配,則無法捕獲異常,程序終止執行。2.try-except-else結構【執行流程】程序先嘗試執行try代碼塊,若無異常則執行else部分;若拋出異常,則檢查異常類型,若與except后列出的任一異常類型匹配,則執行異常處理;若不匹配,則程序通常終止執行。異常處理結構及流程3.try-except-finally異常處理結構【說明】無論有沒有異常,都要執行finally部分的代碼。異常處理結構及流程分析下圖代碼【執行流程】程序進入無限循環,嘗試接收用戶輸入的兩個整數并進行除法運算。若運算過程中未發生異常,則打印運算結果并恭喜用戶,隨后退出循環。若發生除以零的異常,則捕獲該異常并打印錯誤消息。無論是否發生異常,程序都會執行finally塊中的代碼,打印鼓勵消息和分隔線,然后繼續下一次循環(除非已經通過break語句退出)。斷言assertassert表達式斷言格式案例分析斷言通常以關鍵字assert開頭,后面跟著一個布爾表達式,如果表達式為真,則斷言通過,否則拋出異常AssertionError。斷言的語法斷言assert分析下圖代碼:這個斷言檢查name參數的類型是否為字符串(str)。如果不是字符串,程序將拋出一個AssertionError異常。這個斷言檢查age參數的類型是否為整數(int)。如果不是整數,程序將拋出一個AssertionError異常。這個斷言首先檢查sc參數的類型是否為整數(int)。然后,它檢查sc的值是否在0到100的范圍內。如果sc的類型不是整數或者其值不在指定范圍內,程序將拋出異常。asserttype(age)isint拋出異常任務實施運行結果如下:如果y為0,引發ZeroDivisionError異常。捕獲異常打印錯誤信息。如果用戶輸入的不是整數,eval函數將引發ValueError異常。NameError異常在訪問一個未定義的變量時引發。PartThree圓半徑不能為負——自定義異常掌握自定義異常類的結構能夠使用自定義異常處理實際問題try:
語句塊
raise自定義異常類對象except自定義異常類名ase:
異常處理預定義異常(如NameError等)能自動拋出,可用except捕獲。而自定義異常需用raise拋出,然后才能捕獲處理。class異常類(Exception):
#構造方法__init__
#對象描述方法__str__
#其他方法自定義異常類格式raise主動拋出異常自定義異常捕獲結構自定義異常任務實施【任務描述】設計一個圓類,要求用戶從鍵盤輸入圓半徑,如果輸入半徑為正,則創建該圓對象,并輸出該圓的周長和面積;如果輸入半徑值為負,則拋出異常,不創建該圓對象,并提示用戶相應信息。分析1:這段代碼定義了一個名為CircleException的自定義異常類,用于處理圓的半徑不滿足大于0的情況。它繼承自Python的Exception類,并通過重寫__init__和__str__方法,實現了對異常信息的初始化和自定義描述。當圓的半徑不符合要求時,可以拋出CircleException異常,以清晰地表達程序中出現的特定錯誤。自定義異常處理分析2:這段代碼定義了一個名為Circle的類,用于表示圓及其相關操作。它包含三個方法:__init__用于初始化圓的半徑,如果半徑小于或等于0,則拋出CircleException異常;getArea用于計算并返回圓的面積;getLen用于計算并返回圓的周長。該類通過與math模塊中的pi常量結合,實現了對圓的基本屬性和行為的封裝。自定義異常處理分析3:主程序部分提示用戶輸入圓的半徑,嘗試創建Circle類實例。若半徑有效,則打印半徑、面積和周長;若半徑無效,則捕獲并打印CircleException異常信息。整合并運行:半徑為負,拋出異常。合法半徑,正常創建圓對象,輸出面積和周長。PartFour項目實施項目實施定義了自定義異常TriangleException,用于當三條邊長不能構成三角形時拋出。a、b和c三個屬性表示存儲邊長,__str__方法用于返回異常的字符串表示。定義了Triangle類,構造方法接受三個參數。若邊長不符合三角形的構成條件,將拋出定義的TriangleException異常。如果邊長有效,則將它們存儲為實例變量。程序主入口,使用try-except塊來捕獲發生的TriangleException異常。用戶輸入三條邊長,如果它們能構成三角形,則創建Triangle對象并計算面積,否則打印出異常信息。項目實施【運行結果1】【運行結果3】【運行結果2】PartFive項目小結項目總結異常處理主要知識點算法的概念。算法的性質:輸入、輸出、有限、確定和可執行性。算法的目標:正確性、可讀性、健壯性、高時間效率和高空間效率等。異常和錯誤的區別。常見的異常類:類型異常TypeError、值異常ValueError、名稱異常NameError、文件找不到異常FileNotFoundError、索引異常IndexError、零除異常ZeroDivisionError等。掌握異常處理try-ex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB23-T3037-2021-段木栽培松杉靈芝技術規程-黑龍江省
- DB23-T3031-2021-玉米種質田間抗旱性鑒定技術規程-黑龍江省
- 拓展陽臺改造方案(3篇)
- DB23-T2949-2021-植保無人飛機水稻精準施藥技術規程-黑龍江省
- DB23-T2925-2021-飼用紅三葉栽培技術規程-黑龍江省
- 古代家庭醫療管理制度
- 新樓線路改造方案(3篇)
- 制定企業人員管理制度
- 醫院轉運中心管理制度
- 外墻清洗策劃方案(3篇)
- 2025屆上海市普通中學三校聯考生物高二下期末達標測試試題含解析
- WPS考試內容全面解讀試題及答案
- 北京2025年北京市城市管理委員會直屬事業單位招聘筆試歷年參考題庫附帶答案詳解析
- 鷹眼無人機商業計劃書
- 2025年產銷蠶絲織品行業深度研究報告
- 北京市煙草專賣局(公司)筆試試題2024
- 2024北京朝陽區六年級畢業考數學試題及答案
- 2025江蘇蘇州工業園區蘇相合作區助理人員招聘15人易考易錯模擬試題(共500題)試卷后附參考答案
- 壓力容器行業未來發展趨勢與市場前景分析
- 2025年度6深圳中考數學考點、知識點的總結模版
- 2025年全國國家版圖知識競賽題庫及答案題(中小學組)
評論
0/150
提交評論