首頁技術(shù)文章正文

python斷言語句的語法【assert語句】

更新時間:2021-03-04 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif


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

assert語句的格式為:

assert 邏輯表達式, data  # dat是可選的
 

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

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

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

如下錯誤信息:

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

assert語句用來收集用戶定義的約束條件,而不是捕捉內(nèi)在的程序設(shè)計錯誤,因為Python

會自行收集程序的設(shè)計錯誤,會在遇見錯誤時自動引發(fā)異常。


下面通過一個案例來介紹:

while True:
     try:
         x = int(input('請輸入第一個數(shù):'))
         y = int(input('請輸入第二數(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)

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

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

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

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

1614823485923_斷言01.jpg

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

1614823515325_斷言02.jpg



猜你喜歡:

Python常見語法問題和異常概述

python raise拋出異常的3種形式

python常見異常類型介紹

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

分享到:
在線咨詢 我要報名
和我們在線交談!