Python入門-異常處理

1 基本概念

-異常:簡(jiǎn)單來(lái)說(shuō)運(yùn)行期檢測(cè)到的錯(cuò)誤 。

? 異常即是一個(gè)事件,該事件會(huì)在程序執(zhí)行過(guò)程中發(fā)生,影響了程序的正常執(zhí)行。一般情況下,在Python無(wú)法正常處理程序時(shí)就會(huì)發(fā)生一個(gè)異常。

? ?異常是Python對(duì)象,表示一個(gè)錯(cuò)誤。

-異常處理:計(jì)算機(jī)語(yǔ)言針對(duì)可能出現(xiàn)的錯(cuò)誤定義了異常類型,某種錯(cuò)誤引發(fā)對(duì)應(yīng)的異常時(shí),異常處理程序?qū)⒈粏?dòng),從而恢復(fù)程序的正常運(yùn)行。

2 ?異常類型

異常體系內(nèi)部層次關(guān)系


異常總結(jié)

3 異常處理語(yǔ)句

1)try-except

#基本形式

#步驟

?執(zhí)行try子句(在關(guān)鍵字try和關(guān)鍵字except之間的語(yǔ)句)

?如果沒(méi)有異常發(fā)生,忽略except子句,try子句執(zhí)行后結(jié)束。

?如果在執(zhí)行try子句的過(guò)程中發(fā)生了異常,那么try子句余下的部分將被忽略。如果異常的類型和except之后的名稱相符,那么對(duì)應(yīng)的except子句將被執(zhí)行。最后執(zhí)行try語(yǔ)句之后的代碼。

?如果一個(gè)異常沒(méi)有與任何的except匹配,那么這個(gè)異常將會(huì)傳遞給上層的try中。

#注意

一個(gè)try語(yǔ)句可能包含多個(gè)except子句,分別來(lái)處理不同的特定的異常,最多只有一個(gè)分支會(huì)被執(zhí)行。

使用多個(gè)except代碼塊時(shí),必須堅(jiān)持對(duì)其規(guī)范排序,要從最具針對(duì)性的異常到最通用的異常。

一個(gè)?except?子句可以同時(shí)處理多個(gè)異常,這些異常將被放在一個(gè)括號(hào)里成為一個(gè)元組

#example

2)try?- except - finally?

#基本形式

#example

3)try-except-else:else語(yǔ)句的存在必須以except語(yǔ)句的存在為前提,在沒(méi)有except語(yǔ)句的try語(yǔ)句中使用else語(yǔ)句,會(huì)引發(fā)語(yǔ)法錯(cuò)誤

#基本形式

#example

4 raise語(yǔ)句

raise語(yǔ)句用于拋出指定異常


*課后習(xí)題

題目:電腦產(chǎn)生一個(gè)零到100之間的隨機(jī)數(shù)字,然后讓用戶來(lái)猜,如果用戶猜的數(shù)字比這個(gè)數(shù)字大,提示太大,否則提示太小,當(dāng)用戶正好猜中電腦會(huì)提示,"恭喜你猜到了這個(gè)數(shù)是......"。在用戶每次猜測(cè)之前程序會(huì)輸出用戶是第幾次猜測(cè),如果用戶輸入的根本不是一個(gè)數(shù)字,程序會(huì)告訴用戶"輸入無(wú)效"。

解答如下

import random

secret = random.randint(1,100) #[1,3]之間的隨機(jī)數(shù)

i = 1

while True:

? ? print('這是第%d次猜測(cè)'%i)

? ? try:

? ? ? ? temp = input("請(qǐng)輸入數(shù)字:")

? ? ? ? guess = int(temp)

? ? except ValueError:

? ? ? ? print('輸入無(wú)效')

? ? else:

? ? ? ? if guess > secret:

? ? ? ? ? ? print("太大了")

? ? ? ? else:

? ? ? ? ? ? if guess == secret:

? ? ? ? ? ? ? ? print("恭喜你猜到了這個(gè)數(shù)是:%d"%secret)

? ? ? ? ? ? ? ? break

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? print("太小了")

? ? ? ? i += 1

print("游戲結(jié)束")

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容