Python__20-- 常見Bug

2023-01-02 21:12:03 來源:51CTO博客

1 Bug

一杯茶,一包煙,一個Bug改一天


(資料圖)

程序錯誤,即英文的Bug,也稱為缺陷、臭蟲,是指在軟件運行中因為程序本身有錯誤而造成的功能不正常、死機、數據丟失、非正常中斷等現象。 早期的計算機由于體積非常龐大,有些小蟲子可能會鉆入機器內部,造成計算機工作失靈。史上的第一只 "Bug" ,真的是因為一只飛蛾意外走入一電腦而引致故障,因此Bug從原意為臭蟲引申為程序錯誤。 一些有趣的Bug有時也會成為一種樂趣。在電腦游戲中,一些Bug,假如不令游戲出現大錯誤的話,經常會變成一種玩游戲時的秘技。

2 語法錯誤

粗心、粗心、還是粗心如:注意input("哈哈年齡")獲取的都是字符串類型

3 異常處理

異常:

異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。 一般情況下,在Python無法正常處理程序時就會發生一個異常。 異常是Python對象,表示一個錯誤。 當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。

處理:

捕捉異常可以使用try/except語句。 try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息并處理。 如果你不想在異常發生時結束你的程序,只需在try里捕獲它。

3.1 try……except 某錯誤

測試代碼:

try:    a=int(input("請輸入第一個整數"))    b=int(input("請輸入第二個整數"))    result=a/b    print("結果為:",result)except  ZeroDivisionError:    print("對不起,除數不允許為0")except  ValueError:    print("對不起,只能輸入數字串")print("程序結束")

測試結果1:

請輸入第一個整數python 對不起,只能輸入數字串 程序結束

進程已結束,退出代碼為 0

測試結果2:

請輸入第一個整數10 請輸入第二個整數25 結果為: 0.4 程序結束

進程已結束,退出代碼為 0

測試結果3:

請輸入第一個整數10 請輸入第二個整數0 對不起,除數不允許為0 程序結束

進程已結束,退出代碼為 0

3.2 try……except……else

測試代碼:

try:    a=int(input("請輸入第一個整數"))    b=int(input("請輸入第二個整數"))    result=a/bexcept  BaseException:    print("出錯了")else:    print("結果為:",result)print("程序結束")

測試結果1:

請輸入第一個整數1 請輸入第二個整數0 出錯了 程序結束

進程已結束,退出代碼為 0

測試結果2:

請輸入第一個整數a 出錯了 程序結束

進程已結束,退出代碼為 0

測試結果3:

請輸入第一個整數1 請輸入第二個整數2 結果為: 0.5 程序結束

進程已結束,退出代碼為 0

3.3 try……except……else……finally

測試代碼:

try:    a=int(input("請輸入第一個整數"))    b=int(input("請輸入第二個整數"))    result=a/bexcept  BaseException:    print("出錯了")else:    print("結果為:",result)finally:    print("無論是否產生異常,總會被執行的代碼")print("程序結束")

測試結果:

請輸入第一個整數25 請輸入第二個整數0 出錯了 無論是否產生異常,總會被執行的代碼 程序結束

進程已結束,退出代碼為 0

3.4 總結

try: <語句> #運行別的代碼 except <名字name>: <語句> #如果在try部份引發了"name"異常 else: <語句> #如果沒有異常發生 finally: <語句> #無論是否產生異常,總會被執行的代碼

4 常見異常

ZeroDivisionError 不能除0IndexError 數據中沒有此索引KeyError 映射中沒有這個鍵NameError 沒有聲明SyntaError 語法錯誤ValueError 傳入無效的參數

5 traceback模塊

該模塊提供了一個標準接口,用于提取,格式和打印Python程序的堆棧痕跡。 它完全模仿了Python解釋器在打印堆棧跟蹤時的行為。 當您想在程序控制下打印堆棧跡線時,這非常有用,例如在解釋器周圍的“包裝器”中。

在日常開發中,我們會做一些基本的異常處理,但是有時候只能打印我們處理的結果或者將異常打印出來,不能直觀的知道在哪個文件中的哪一行出錯。traceback模塊就是為了解決這個問題出現的。

測試代碼:

import tracebacktry:    print("-----------")    print(1/0)except:    traceback.print_exc()

測試結果:

Traceback (most recent call last): File "E:\pythonProject\Python_YSJ\chap11\??test.py???", line 7, in print(1/0) ZeroDivisionError: division by zero進程已結束,退出代碼為 0

標簽: 測試結果 異常處理 異常發生

上一篇:OSI 二層技術之STP生成樹協議
下一篇:快資訊丨44-KVM虛擬化-存儲管理和磁盤擴容