日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

异常处理_月隐学python第19课

發布時間:2023/12/19 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异常处理_月隐学python第19课 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄

1. 異常處理

1.1 try-except語句

1.3 拋出異常

1.4 異常嵌套

1.5 assert斷?

1.6 ?定義異常類

作業:

初級

中級


?


1. 異常處理

錯誤指的是代碼有語法問題,?法解釋運?,必須改正后才能運?如果代碼沒有語法問題,可以運?,但會出運?時的錯誤,例如除零錯誤,下標越界等問題,這種在運?期間檢測到的錯誤被稱為異常 ,出現了異常必須處理否則程序會終?執?,?戶體驗會很差。 Phthon?持程序員??處理檢測到的異常。可以使?try-except語句進?異常的檢測和處理


1.1 try-except語句

執?流程:

  • 1、?先執?try中【代碼塊A】,如果出現異常,?即終?代碼執?,轉?到except塊中進?異常處理
  • 2、異常處理except模塊可以多個,從上往下匹配,如果能夠匹配成功,?即執?相應的異常處理代碼塊,執?完畢后,不在往下匹配,轉到3執?
  • 3、執?異常處理完畢后,如果有finally字句則執?finally字句,如果沒有則執?【后續語句】
  • 4、如果匹配不到異常,有finally則執?finally,然后則拋出錯誤,終?程序執?。
  • 5、如果沒有異常,如果有else字句則執?else字句,執?完else后,有finally字句則執?,沒有則執?【后續語句】

注意事項:

  • except匹配順序從上到下
  • except語句書寫要求:精確的類型往前放,模糊的,不精確的往后放
  • except不帶任何類型,則匹配所有類型異常,應該放到最后,吞掉異常
  • 可以將多種異常?元組的?式(異常類型1,異常類型2...異常類型n)書寫,簡化代碼
  • except字句中e,是?個對象,打印它,會顯示異常信息描述
  • try-except也可以捕獲?法或函數中拋出的異常
  • 所有異常類型都繼承?BaseException,使?BaseException可以將異常??打盡
  • finally字句中可以進??些清理?作,?如關閉?件,數據庫等?作

1.3 拋出異常

?動拋出?個指定類型的異常,?論是哪種異常類都可以帶?個字符串參數,對異常進?描述。
raise不帶參數會把錯誤原樣拋出

1.4 異常嵌套

在try塊和excep塊中還可以分別再嵌套try-except塊


1.5 assert斷?

語法: assert 條件 [,異常描述字符串]
執?流程:如果條件為假,則拋出AssertionError,條件為真,就當assert不存在
作?:對于可能出問題的代碼,加上斷?,?便問題排查

1.6 ?定義異常類

如果系統異常類型滿?不了業務需求,那么可以??定義異常類來處理。
??定義的異常類必須繼承BaseException或Exception
步驟:
在?定義異常類的構造函數中,調??類構造函數
重寫 __str__ ?法輸出異常信息
編寫異常處理?法處理異常

作業:

初級

1.利用封裝和繼承的特性完成如下操作:

class SmallStudent:def __init__(self, name, id, age, sex):self.name = nameself.id = idself.age = ageself.sex = sexdef learn(self,course):print("{}學習的內容為:{}".format(self.name,course))return "{}學習的內容為:{}".format(self.name,course)def fight(self):print("打架")xiaoming = SmallStudent("小明", 10010, 8, '男') xiaoming.learn("語文 數學 英語")class MiddleStudent(SmallStudent):def __init__(self, name, id, age, sex):super().__init__(name, id, age, sex)def fall_in_love(self):print("談戀愛")xiaoer = MiddleStudent("小二",20020,12,'男') xiaoer.learn("語數外 生物化 史地政")class BigStudent(MiddleStudent):def __init__(self, name, id, age, sex):super().__init__(name, id, age, sex)def skip_classes(self):print("{}逃課中。。。。。".format(self.name))xiaosan = BigStudent("小三",30030,19,"女") xiaosan.skip_classes()

2.主?楊夫??向客人 李?姐介紹?己家的寵物狗和寵物貓

中級

1.設計一個Person,包含姓名、年齡和性別三個私有成員屬性,另外Person類還包含males和females兩個私有類屬性,用來記錄男?和?生的數量, 可以通過number_male和number_female兩個公有類方法獲取males和females兩個私有類屬性的值。?己完成Person類的設計,然后實例化多個Person的對象, 分別統計男女的?數

2.編寫?個簡單的?資管理程序,系統可以管理以下四類人:

??(worker)、銷售員(salesman)、經理(manager)、銷售經理(salemanger)。

所有的員?都具有員?號,姓名,?資等屬性,有設置姓名,獲取姓名,獲取員工號,計算?資等?法。

1)??:??具有?作?時數和時薪的屬性,?資計算法方法為?作小時數時薪。

2)銷售員:具有銷售額和提成比例的屬性,?資計算?法為銷售額提成?例。

3)經理:具有固定?薪的屬性,?資計算?法為固定月薪。

4)銷售經理:?資計算方法為銷售額*提成比例+固定?薪。

請根據以上要求設計合理的類,完成以下功能:

1)添加所有類型的?員

2)計算?薪

3)顯示所有?工資情況

class Worker:def __init__(self, id, name, work_hours, hour_value):self.id = idself.name = nameself.work_hours = work_hoursself.hour_value = hour_valuedef salary(self):return float(self.work_hours) * float(self.hour_value)class Salesman:def __init__(self, id, name, sale, rate):self.id = idself.name = nameself.sale = saleself.rate = ratedef salary(self):return float(self.sale) * float(self.rate)class Manager:def __init__(self, id, name, fixed):self.id = idself.name = nameself.fixed = fixeddef salary(self):return float(self.fixed)class Salesmanager:def __init__(self, id, name, sale, rate, fixed):self.id = idself.name = nameself.sale = saleself.rate = rateself.fixed = fixeddef salary(self):return float(self.sale) * float(self.rate) + float(self.fixed)aa = Salesmanager(1001, 'AA', 8000, 0.2, 1000) print(aa.salary())def AddWorkers():workers = []salesmans = []managers = []salesmanagers = []while 1:worker_post = input("請輸入員工崗位(工人/銷售員/經理/銷售經理):")if worker_post == '工人':while 1:workers_data = input('(注意:輸入ok則退出當前工種)請輸入工人工號,姓名,工作時間,時薪:').split(" ")if workers_data[0] == 'ok' or workers_data[0] == 'OK':breakworkers.append(Worker(workers_data[0], workers_data[1], workers_data[2], workers_data[3]))elif worker_post == '銷售員':while 1:sales_data = input('(注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例:').split(" ")if sales_data[0] == 'ok' or sales_data[0] == 'OK':breaksalesmans.append(Salesman(sales_data[0], sales_data[1], sales_data[2], sales_data[3]))elif worker_post == '經理':while 1:sales_data = input('(注意:輸入ok則退出當前工種)請輸入工人工號,姓名,固定工資:').split(" ")if sales_data[0] == 'ok' or sales_data[0] == 'OK':breakmanagers.append(Manager(sales_data[0], sales_data[1], sales_data[2]))elif worker_post == '銷售經理':while 1:sales_data = input('(注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例,固定工資:').split(" ")if sales_data[0] == 'ok' or sales_data[0] == 'OK':breaksalesmanagers.append(Salesmanager(sales_data[0], sales_data[1], sales_data[2], sales_data[3], sales_data[4]))else:print("輸入錯誤,請重新輸入")done = input("是否完成添加(Y/N):")if done == 'Y' or done == 'y':breakstaffs = [workers, salesmans, managers, salesmanagers]return staffsdef workers_out(workers):print("{:<2}\t {:<2}\t {:<2}".format('工號', '姓名', '工資'))for post in workers:for worker in post:print("{:<2}\t {:<2}\t {:<2}".format(worker.id, worker.name, worker.salary()))print()def PayrollSystem():print("""**************歡迎使用小爺工資管理系統**************【1】添加員工【2】輸出人員工資情況【0】退出系統*************************************************""")while 1:n = int(input("請輸入您的選擇:"))if n == 1:staffs = AddWorkers()if n == 2:workers_out(staffs)if n == 0:print('************歡迎再次使用本系統***********')breakPayrollSystem()

?運行測試結果

**************歡迎使用小爺工資管理系統**************【1】添加員工【2】輸出人員工資情況【0】退出系統*************************************************請輸入您的選擇:1 請輸入員工崗位(工人/銷售員/經理/銷售經理):工人 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,工作時間,時薪:1001 工一 320 30 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,工作時間,時薪:1002 工二 350 35 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,工作時間,時薪:ok 是否完成添加(Y/N):N 請輸入員工崗位(工人/銷售員/經理/銷售經理):銷售員 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例:2001 銷售一 90000 0.1 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例:2002 銷售二 80000 0.1 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例:ok 是否完成添加(Y/N):N 請輸入員工崗位(工人/銷售員/經理/銷售經理):經理 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,固定工資:3001 經理一 6000 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,固定工資:3002 經理二 5000 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,固定工資:ok 是否完成添加(Y/N):N 請輸入員工崗位(工人/銷售員/經理/銷售經理):銷售經理 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例,固定工資:4001 小金一 80000 0.1 3000 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例,固定工資:4002 小金二 90000 0.1 4000 (注意:輸入ok則退出當前工種)請輸入工人工號,姓名,銷售額,提成比例,固定工資:ok 是否完成添加(Y/N):Y 請輸入您的選擇:2 工號 姓名 工資 1001 工一 9600.0 1002 工二 12250.02001 銷售一 9000.0 2002 銷售二 8000.03001 經理一 6000.0 3002 經理二 5000.04001 小金一 11000.0 4002 小金二 13000.0


?

?

總結

以上是生活随笔為你收集整理的异常处理_月隐学python第19课的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。