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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2023/12/19 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异常处理_月隐学python第19课 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

目錄

1. 異常處理

1.1 try-except語句

1.3 拋出異常

1.4 異常嵌套

1.5 assert斷?

1.6 ?定義異常類

作業(yè):

初級

中級


?


1. 異常處理

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


1.1 try-except語句

執(zhí)?流程:

  • 1、?先執(zhí)?try中【代碼塊A】,如果出現(xiàn)異常,?即終?代碼執(zhí)?,轉(zhuǎn)?到except塊中進(jìn)?異常處理
  • 2、異常處理except模塊可以多個(gè),從上往下匹配,如果能夠匹配成功,?即執(zhí)?相應(yīng)的異常處理代碼塊,執(zhí)?完畢后,不在往下匹配,轉(zhuǎn)到3執(zhí)?
  • 3、執(zhí)?異常處理完畢后,如果有finally字句則執(zhí)?finally字句,如果沒有則執(zhí)?【后續(xù)語句】
  • 4、如果匹配不到異常,有finally則執(zhí)?finally,然后則拋出錯(cuò)誤,終?程序執(zhí)?。
  • 5、如果沒有異常,如果有else字句則執(zhí)?else字句,執(zhí)?完else后,有finally字句則執(zhí)?,沒有則執(zhí)?【后續(xù)語句】

注意事項(xiàng):

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

1.3 拋出異常

?動(dòng)拋出?個(gè)指定類型的異常,?論是哪種異常類都可以帶?個(gè)字符串參數(shù),對異常進(jìn)?描述。
raise不帶參數(shù)會(huì)把錯(cuò)誤原樣拋出

1.4 異常嵌套

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


1.5 assert斷?

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

1.6 ?定義異常類

如果系統(tǒng)異常類型滿?不了業(yè)務(wù)需求,那么可以??定義異常類來處理。
??定義的異常類必須繼承BaseException或Exception
步驟:
在?定義異常類的構(gòu)造函數(shù)中,調(diào)??類構(gòu)造函數(shù)
重寫 __str__ ?法輸出異常信息
編寫異常處理?法處理異常

作業(yè):

初級

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

class SmallStudent:def __init__(self, name, id, age, sex):self.name = nameself.id = idself.age = ageself.sex = sexdef learn(self,course):print("{}學(xué)習(xí)的內(nèi)容為:{}".format(self.name,course))return "{}學(xué)習(xí)的內(nèi)容為:{}".format(self.name,course)def fight(self):print("打架")xiaoming = SmallStudent("小明", 10010, 8, '男') xiaoming.learn("語文 數(shù)學(xué) 英語")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("語數(shù)外 生物化 史地政")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.設(shè)計(jì)一個(gè)Person,包含姓名、年齡和性別三個(gè)私有成員屬性,另外Person類還包含males和females兩個(gè)私有類屬性,用來記錄男?和?生的數(shù)量, 可以通過number_male和number_female兩個(gè)公有類方法獲取males和females兩個(gè)私有類屬性的值。?己完成Person類的設(shè)計(jì),然后實(shí)例化多個(gè)Person的對象, 分別統(tǒng)計(jì)男女的?數(shù)

2.編寫?個(gè)簡單的?資管理程序,系統(tǒng)可以管理以下四類人:

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

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

1)??:??具有?作?時(shí)數(shù)和時(shí)薪的屬性,?資計(jì)算法方法為?作小時(shí)數(shù)時(shí)薪。

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

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

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

請根據(jù)以上要求設(shè)計(jì)合理的類,完成以下功能:

1)添加所有類型的?員

2)計(jì)算?薪

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("請輸入員工崗位(工人/銷售員/經(jīng)理/銷售經(jīng)理):")if worker_post == '工人':while 1:workers_data = input('(注意:輸入ok則退出當(dāng)前工種)請輸入工人工號,姓名,工作時(shí)間,時(shí)薪:').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則退出當(dāng)前工種)請輸入工人工號,姓名,銷售額,提成比例:').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 == '經(jīng)理':while 1:sales_data = input('(注意:輸入ok則退出當(dāng)前工種)請輸入工人工號,姓名,固定工資:').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 == '銷售經(jīng)理':while 1:sales_data = input('(注意:輸入ok則退出當(dāng)前工種)請輸入工人工號,姓名,銷售額,提成比例,固定工資:').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("輸入錯(cuò)誤,請重新輸入")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("""**************歡迎使用小爺工資管理系統(tǒng)**************【1】添加員工【2】輸出人員工資情況【0】退出系統(tǒng)*************************************************""")while 1:n = int(input("請輸入您的選擇:"))if n == 1:staffs = AddWorkers()if n == 2:workers_out(staffs)if n == 0:print('************歡迎再次使用本系統(tǒng)***********')breakPayrollSystem()

?運(yùn)行測試結(jié)果

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


?

?

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。