教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

python assert用法詳解【傳智教育】

更新時(shí)間:2021年03月04日10時(shí)24分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)


assert語(yǔ)句又稱作斷言,指的是期望用戶滿足指定的條件。當(dāng)用戶定義的約束條件不滿足的時(shí)候,它會(huì)觸發(fā)AsserionError異常,所以assert語(yǔ)句可以當(dāng)作條件式的raise語(yǔ)句。

assert語(yǔ)句的格式為:

assert 邏輯表達(dá)式, data  # dat是可選的
 

在上述格式中,assert后面緊跟一個(gè)邏輯表達(dá)式,相當(dāng)于條件。data通常是一個(gè)字符串;當(dāng)表達(dá)式的結(jié)果為False時(shí),作為異常類型的描述信息使用。邏輯上等同于:

if not 邏輯表達(dá)式:
     raise AssertionError(data)
斷言的示例如下:
a = 0
 assert a!=0, "a 的值不能為0"

上述示例中,定義了變量a的值為0,然后使用assert斷言a的值不等于0,所以程序出現(xiàn)

如下錯(cuò)誤信息:

Traceback (most recent call last):
  File "C:\Users\itcast\PycharmProjects\bili_new\test.py", line 2, in 
    assert a!=0, "a 的值不能為0"
AssertionError: a 的值不能為0

assert語(yǔ)句用來(lái)收集用戶定義的約束條件,而不是捕捉內(nèi)在的程序設(shè)計(jì)錯(cuò)誤,因?yàn)镻ython

會(huì)自行收集程序的設(shè)計(jì)錯(cuò)誤,會(huì)在遇見(jiàn)錯(cuò)誤時(shí)自動(dòng)引發(fā)異常。

下面通過(guò)一個(gè)案例來(lái)介紹:

while True:
     try:
         x = int(input('請(qǐng)輸入第一個(gè)數(shù):'))
         y = int(input('請(qǐng)輸入第二數(shù)'))
         assert x > 1 and y >1, "a和b的值必須大于1" # 斷言
         a = x
         b = y
         if a < b:
             a, b = b, a   # a與b的值互換
         while b!=0:       # 使用輾轉(zhuǎn)相除法求最大公約數(shù)
             temp = a % b
             a = b
             b = temp
         else:
             print('%s和%s的最大公約數(shù)為:%s' % (x, y, a))
             break
     except Exception as result:
         print('捕捉到異常:\n', result)

在上面案例中,整個(gè)程序位于while循環(huán)內(nèi)部,循環(huán)中有個(gè)try-except異常處理語(yǔ)句。在try里面,第3~4行從鍵盤(pán)獲取了int類型的兩個(gè)數(shù)值x和y ,第5行斷言x和y的值必須都大于1,第6~7行分別把x和y的值賦值給a和b,第8~9行使用if語(yǔ)句判斷,如果a比b的小,就互換a和b的值。

第10~16行使用while-else執(zhí)行循環(huán)。如果b不等于0,就使用輾轉(zhuǎn)相除法求最大公約數(shù);如果是其他情況,就直接輸出最大公約數(shù)的值,并使用break終止循環(huán)。

在except中使用Exception捕捉所有的異常,并獲取異常對(duì)應(yīng)的描述信息。

運(yùn)行程序,在控制臺(tái)輸入第1個(gè)數(shù)為1,第2個(gè)數(shù)為5,具體結(jié)果如下圖所示。

1614823485923_斷言01.jpg

在控制臺(tái)再次輸入第1個(gè)數(shù)為15,第2個(gè)數(shù)為55,具體結(jié)果如下圖所示。

1614823515325_斷言02.jpg



猜你喜歡:

Python常見(jiàn)語(yǔ)法問(wèn)題和異常概述

python raise拋出異常的3種形式

python常見(jiàn)異常類型介紹

黑馬程序員python培訓(xùn)班

0 分享到:
和我們?cè)诰€交談!