更多內容,請訪問個人 我的博客。python
咱們在寫程序的時候最喜聞樂見的就是程序打印出咱們想要的結果。編程
最怕的就是程序沒有按照咱們預先設想的樣子運行,完了還爆出一堆的錯誤信息。bash
本章要介紹的就是python中的報錯信息。報錯信息有不少種,這裏介紹兩種比較常見的報錯信息:ui
咱們先來看看什麼是語法錯誤。還記得咱們以前講的for循環語句,必需要帶冒號,若是不帶冒號,就會報語法錯誤。spa
list = ['蘋果', '西瓜', '葡萄']
for lt in list
print(lt)
for lt in list
^
SyntaxError: invalid syntax
複製代碼
若是循環語句中沒有縮進,也會報語法錯誤。code
list = ['蘋果', '西瓜', '葡萄']
for lt in list:
print(lt)
print(lt)
^
IndentationError: expected an indented block
複製代碼
報錯信息中寫的很清楚,按照提示修改就能夠了。blog
在語法正確的狀況下,若是程序中出現邏輯錯誤,那麼也是會報錯的,這類錯誤就是邏輯異常。ip
好比計算1/0,咱們知道0是不能做爲除數的,這屬於邏輯錯誤,程序就會報異常。get
a = 1 / 0
print(a)
a = 1 / 0
ZeroDivisionError: division by zero
複製代碼
再好比這個例子,程序就會報異常,說b這個玩意兒沒有定義,不知道是啥。input
a = 1 / b
print(a)
a = 1 / b
NameError: name 'b' is not defined
複製代碼
有的時候咱們懷疑某段代碼可能會報錯,或者說是擔憂會報錯,可是又不但願程序會所以斷掉。這時候咱們就能夠用try語句捕獲異常信息。
try:
1/0
except:
print('程序報錯了')
print('不管1/0對不對,我都不但願程序停止')
複製代碼
正如上面這個例子,雖然1/0是邏輯錯誤,可是程序並不會報錯,程序會依次輸出這兩句話,而後程序正常退出。
咱們也能夠根據報錯信息的不一樣作分類處理。
try:
a/0
except ZeroDivisionError:
print('0不能做爲被除數')
except NameError:
print('變量沒有被定義')
複製代碼
正如上面這個例子,咱們能夠分別捕獲 0不能做爲被除數
和 變量沒有被定義
這兩類異常信息。
固然,咱們也能夠加上else語句,當try裏的內容一點錯誤也沒有時,執行else裏的代碼。
try:
a/0
except ZeroDivisionError:
print('0不能做爲被除數')
except NameError:
print('變量沒有被定義')
else:
print('沒有任何報錯')
複製代碼
嘗試給下列代碼添加上try語句,並分別捕獲 ZeroDivisionError
、NameError
異常。
x = int(input("請輸入一個整數: "))
y = 1 / x
print(x + "的倒數是:" + y)
複製代碼
關注公衆號:潘高陪你學編程,回覆020,獲取習題答案。