Python常見報錯解決方案總結(新手拯救指南)
前言
如果說寫代碼最害怕什么,那無疑是Bug。而對于新手來說,剛剛接觸編程,在享受寫代碼的成就感時,往往也會被各式各樣的Bug弄得暈頭轉(zhuǎn)向。今天,我們就做了一期Python常見報錯的分享,拯救你的代碼!
01縮進錯誤(IndentationError)
在Python中,所有代碼都是通過正確的空格排列的。所以,無論是多出來空格,還是缺少空格,整個代碼都不會運行,并且僅返回一個錯誤函數(shù)。
Python代碼遵循PEP8空白規(guī)范,每一級縮進使用4個空格。
錯誤示例
a=1 b=2 if a<b: print a
修正
a=1 b=2 if a<b: print a
02Tab 和空格混用(TabError)
此類報錯是由于同時使用制表符和空格進行編碼導致的,tab鍵本質(zhì)上是制表符,而非縮進符。由于不同文本編輯器中制表符代表的空格寬度不一,建議使用空格。
03語法錯誤(SyntaxError)
語法錯誤的原因包含下列三種:
- 無效語法(invalid syntax)標點符號遺漏,中英文符號混用,拼寫錯誤,變量名或者函數(shù)名使用了關鍵字。
- 標識符中有無效字符(invalid character in identifier)代碼中出現(xiàn)了無法識別的字符,檢查一下是否有多余字符或者中文字符。
- 檢查到不完整的字符串(EOL while scanning string litera)很多情況下是由于字符串兩邊的引號不統(tǒng)一。
錯誤示例
print( 'hello', 'world')錯誤原因:逗號為中文逗號
報錯信息:SyntaxError: invalid character inidentifier
result = (1024+(512*2)/128錯誤原因:圓括號沒有成對出現(xiàn)
報錯信息:SyntaxError:unexpected EOF whileparsing
if name =="A" print("hello")
錯誤原因:忘記在if/elif/else/while/for/def/class等語句末尾添加冒號
報錯信息:SyntaxError:invalid syntax
04變量名錯誤(NameErro)
變量名錯誤是最普通也是最常會遇到的內(nèi)建報錯類型,經(jīng)常會出現(xiàn)在Python變量命名上,如果找不到變量就會引發(fā)NameError。關于變量名的規(guī)則,需要牢記以下幾條:
- 變量名只能包含字母、數(shù)字和下劃線,不可用數(shù)字開頭;
- 變量名不能包含空格,但可使用下劃線來分隔其中的單詞;
- 不要將Python關鍵字和函數(shù)名用作變量名,如print;
- 變量名應既簡短又具有描述性;
- 慎用小寫字母l和大寫字母O,因為容易被錯看成數(shù)字1和0。
出現(xiàn)變量名錯誤,可以查看變量是否賦值,是否存在大小寫不統(tǒng)一或者變量名寫錯了的情況,找到后加以修正。
錯誤示例
message = "Hello!" print(mesage)
錯誤原因:變量名拼寫錯誤,誤將massage拼寫為masge
報錯信息:NameError: name 'mesage' is not defined
05索引錯誤(IndexError)
索引是項目在數(shù)組或列表中的位置,當我們嘗試從列表中訪問元素或從列表中不存在的索引中訪問元組時,就會發(fā)生這種異常。
例如,有一個包含10個元素的列表,索引在0到9之間,如果試圖訪問索引10或11或更多的元素,就會產(chǎn)生IndexError。
錯誤示例
a = [1,2,3] print(a[3])
錯誤原因:列表a中不存在第4個索引,列表的索引從0開始編號
報錯信息:IndexError: string index out of range
06鍵錯誤(KeyError)
在讀取字典中的key和value時,如 果key不存在,就會觸發(fā)KeyError錯誤。
錯誤示例
d = {'a':1,'b':2} print(d['f'])
錯誤原因:鍵‘f’不存在
報錯信息:KeyError: 'f'
07類型錯誤(TypeError)
在程序中使用不正確或不受支持的對象類型時,會引發(fā)該錯誤。如果嘗試調(diào)用不可調(diào)用的對象或通過非迭代標識符進行迭代,也會引發(fā)此錯誤。
錯誤示例
age=18 print("我的年齡是"+age)
錯誤原因:在使用“+”做拼接的時候,必須使用字符串,或者 把數(shù)字用str()函數(shù)轉(zhuǎn)化成字符串
報錯信息:TypeError:can only concatenate str(not"int")to str
08屬性錯誤(AttributeError)
特性引用和賦值失敗時會引發(fā)屬性錯誤。
此類錯誤的原因是嘗試訪問未知的對象屬性,換句話說就是找不到對應對象的屬性??梢詸z查類中構造函數(shù)__init__()是否寫正確,左右兩邊各兩條下劃線。
對于初學的小伙伴來說,代碼經(jīng)常出現(xiàn)Bug并不代表著你學得不好。若是將一個個Bug看作游戲里小怪,那么消滅Bug的過程又何嘗不是升級的過程呢?
總結
到此這篇關于Python常見報錯解決方案的文章就介紹到這了,更多相關Python常見報錯解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python實現(xiàn)mask矩陣示例(根據(jù)列表所給元素)
這篇文章主要介紹了python實現(xiàn)mask矩陣示例(根據(jù)列表所給元素),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07Python django框架輸入漢字,數(shù)字,字符生成二維碼實現(xiàn)詳解
這篇文章主要介紹了Python django框架輸入漢字,數(shù)字,字符轉(zhuǎn)成二維碼實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09Python使用difflib標準庫實現(xiàn)查找文本間的差異
在文本處理和比較中,查找文本之間的差異是一項常見的任務,本文將詳細介紹如何使用difflib模塊來查找文本之間的差異,包括單行和多行文本的比較、生成差異報告,需要的可以參考下2024-03-03