大家好,我是Python人工智慧技術
如果說寫程式碼最害怕什麼,那無疑是Bug。而對於新手來說,剛接觸編程,在享受寫代碼的成就感時,往往也會被各式各樣的Bug弄得暈頭轉向。
今天,我們就做了一期Python常見報錯的分享,拯救你的程式碼!
在Python中,所有程式碼都是透過正確的空格排列的。所以,無論是多出來空格,還是缺少空格,整個程式碼都不會運行,並且只回傳一個錯誤函數。
Python程式碼遵循PEP8空白規範,每一層縮排使用4個空格。
錯誤範例
a=1 b=2 if a<b: print a
修正
a=1 b=2 if a<b: print a
此類報錯是由於同時使用製表符和空格進行編碼導致的,tab鍵本質上是製表符,而非縮排符。由於不同文字編輯器中製表符代表的空格寬度不一,建議使用空格。
文法錯誤的原因包含下列三種:
1.無效語法(invalid syntax)
標點符號遺漏,中英文符號混用,拼字錯誤,變數名或函數名使用了關鍵字。
2.標識符中有無效字元(invalid character in identifier)
代碼中出現了無法辨識的字符,檢查一下是否有多餘字元或中文字元。
3.檢查到不完整的字串(EOL while scanning string litera)
很多情況下是由於字串兩邊的引號不統一。另外,搜尋公眾號Linux就該這樣學後台回覆“git書籍”,獲取一份驚喜禮包。
錯誤範例
print( 'hello', 'world')
錯誤原因:逗號為中文逗號
報錯訊息:SyntaxError: invalid character inidentifier
result = (1024+(512*2)/128
錯誤原因:圓括號沒有成對出現
報錯訊息:SyntaxError:unexpected EOF whileparsing
if name =="A" print("hello")
錯誤原因:忘記在if/elif/else/while/for/def/class等語句結尾加上冒號
報錯訊息:SyntaxError:invalid syntax
變數名錯誤是最普通也是最常會遇到的內建錯誤類型,常常會出現在Python變數命名上,如果找不到變數就會引發NameError。關於變數名稱的規則,需要牢記以下幾條:
出現變數名錯誤,可以查看變數是否賦值,是否存在大小寫不統一或變數名寫錯了的情況,找到後加以修正。
錯誤範例
message = "Hello!" print(mesage)
錯誤原因:變數名稱拼字錯誤,誤將massage拼寫為masge
報錯訊息:NameError: name 'mesage' is not defined
索引是項目在數組或列表中的位置,當我們嘗試從列表中訪問元素或從列表中不存在的索引訪問元組時,就會發生這種異常。
例如,有一個包含10個元素的列表,索引在0到9之間,如果試圖存取索引10或11或更多的元素,就會產生IndexError。
錯誤範例
a = [1,2,3] print(a[3])
錯誤原因:清單a中不存在第4個索引,清單的索引從0開始編號
錯誤訊息:IndexError: string index out of range
在讀取字典中的key和value時,如果key不存在,就會觸發KeyError錯誤。
錯誤範例
d = {'a':1,'b':2} print(d['f'])
錯誤原因:鍵'f'不存在
錯誤訊息:KeyError: 'f'
在程式中使用不正確或不受支援的物件類型時,會引發該錯誤。如果嘗試呼叫不可呼叫的物件或透過非迭代標識符進行迭代,也會引發此錯誤。
錯誤範例
age=18 print("我的年龄是"+age)
錯誤原因:在使用「 」做拼接的時候,必須使用字串,或是把數字用str()函數轉換成字串
錯誤訊息:TypeError:can only concatenate str(not"int")to str
特性引用和賦值失敗時會引發屬性錯誤。
此類錯誤的原因是嘗試存取未知的物件屬性,換句話說就是找不到對應物件的屬性。可以檢查類別中建構函數__init__()是否寫正確,左右兩邊各兩條下劃線。
以上是Python常見報錯及解決方案,建議收藏!的詳細內容。更多資訊請關注PHP中文網其他相關文章!