1. 程式人生 > >[python]bug和debug

[python]bug和debug

span 現在 而不是 英文 分析 異常處理 容易 兩個 通過

bug:代碼中存在的語法或者邏輯問題

debug:自查和解決代碼中的問題

(coding五分鐘,debug兩小時)

一、出現bug原因的四大類型

1、粗心

1)錯誤案例

技術分享圖片

上面這個錯誤就是因為 if語句少了【英文冒號】

1)分析問題:

仔細看報錯,其中有3個關鍵信息。

(1)line 2代表這個bug出現在第2行,所以,我們在Debug的時候,可以優先從第2行開始檢查

(2)^代表bug發生的位置,這裏指出的位置是第二行末尾。

(3)這一行寫的是錯誤類型,SyntaxError指的是語法錯誤。

(如果不知道報錯信息的中文意思,可以把錯誤信息復制到百度去搜索)

技術分享圖片

2)總結容易錯的地方(初學者的自檢清單)

技術分享圖片

2、知識不熟練

1)錯誤案例

該代碼的目的是取出列表中的‘星期日‘

技術分享圖片

2)分析問題

錯誤原因:忘記了列表的索引是從0而不是從1開始的

從報錯信息也可以看出:下表越界

啟示:當你發現知識點記不清或者不能確定的時候,就要及時復習或者上網搜索。不要強行寫出自己不敢確定的代碼,這種情況往往容易出錯。如果對某個基礎知識點沒有熟練的掌握,隨著往後知識廣度、深度以及項目難度的增加,很可能會增加大量的理解成本,所以多復習、多練習總是沒有錯滴。

3、思路不清

思路不清指的是當我們解決比較復雜的問題時,由於我們對細節和實現手段思考得不夠清楚,要麽導致一步錯,步步錯;要麽雖然沒有報錯,但是程序沒有達到我們想要的效

1)錯誤案例

功能:輸入出演者姓名,即可輸出他出演的電影,錯誤代碼如下

運行後發現此代碼不能實現想要的功能

技術分享圖片

2)分析問題

解決思路不清的工具

技術分享圖片

1)遇到關鍵步驟時print出來,看是否達到我們所期望的結果,以此來揪出錯誤的那一步。

通過打印發現,取出來的都是字典的鍵

技術分享圖片

正確的代碼

技術分享圖片

3)總結

技術分享圖片

4、被動掉坑

被動掉坑,是指有時候你的代碼邏輯上並沒有錯,但可能因為用戶的錯誤操作或者是一些“例外情況”而導致程序崩潰。

我們舉個例子,當運行以下代碼的時候,如果輸入的東西不是數字,則程序一定會報錯。

技術分享圖片

“ValueError”的意思是“傳入無效的參數”。因為,int()函數不能接受非數字的字符串。

2)分析並解決問題

Python給我們提供了一種異常處理的機制,可以在異常出現時即時捕獲,然後內部消化掉,讓程序繼續運行。

try---except語法

技術分享圖片

多個異常的寫法:

try: # 嘗試執行下列代碼

XXXXX
except (ZeroDivisionError,TypeError):
XXXXXX

捕獲異常後的代碼

技術分享圖片

案例2

技術分享圖片

代碼要點有兩個:

(1)因為不知道用戶什麽時候才會輸入正確,所以設置while循環來接受輸入,只要用戶輸入不是數字就會一直循環,輸入了數字就break跳出循環。

(2)使用try……except……語句,當用戶輸錯的時候會給予提示。

關於Python的所有報錯類型,有需要的話可以在這裏查閱:https://www.runoob.com/python/python-exceptions.html

案例3:

技術分享圖片

補充;

關於更多異常可參考 https://segmentfault.com/a/1190000007736783

[python]bug和debug