您好,登錄后才能下訂單哦!
這篇文章給大家介紹Python3的十大經典錯誤及解決辦法,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
接觸了很多Python愛好者,有初學者,亦有轉行人。不論大家學習Python的目的是什么,總之,學習Python前期寫出來的代碼不報錯就是極好的。下面,嚴小樣兒為大家羅列出Python3十大經典錯誤及解決辦法,供大家學習。
一、 SyntaxError 語法錯誤
(1)引號沒有成對出現
報錯信息:
SyntaxError:EOL while scanning string literal
錯誤示例:
string = 'hello world
解決方法:
字符串切記要放在引號中,單引號雙引號無所謂。當一個字符串中包含單引號或雙引號時,很容易出現引號不配對的情況。
(2)圓括號沒有成對出現
報錯信息:
SyntaxError:unexpected EOF while parsing
錯誤示例1:
result = (1024+(512*2)/128
錯誤示例2:
print('hello world'
解決方法:
使圓括號成對出現。在書寫復雜的表達式或調用函數時會經常遇到這個問題。
(3)錯誤使用自操作運算符++或--等
報錯信息:
SyntaxError:invalid syntax
錯誤示例:
v = 64 v++
解決方法:
在Python語言中,沒有類似C語言的++或--等自操作運算符。與之類似功能的用法是+=或-=運算符。例如,使用下面的代碼進行讓變量v進行自增1的操作。
v += 1
(4)試圖使用等號(=)判斷兩個運算量是否相等
報錯信息:
SyntaxError:invalid syntax
錯誤示例:
if v=64:2 print('hello world')
解決方法:
在Python語言中使用兩個等號(==)作為判斷兩個運算量是否相等的關系運算符,而等號(=)是賦值運算符。
(5)錯誤使用Python語言關鍵字作為變量名
報錯信息:
SyntaxError: can`t assign to keyword
錯誤示例:
False= 1
解決方法:
不要使用Python語言關鍵字作為變量名、函數名或類名等。在Python Shell窗口中,使用help('keywords')指令可以查看Python語言的關鍵字列表。
(6)忘記在if/elif/else/while/for/def/class等語句末尾添加冒號(:)
報錯信息:
SyntaxError:invalid syntax
錯誤示例1:
a = '12345' for i in a print(i)
錯誤示例2:
def sayhi() print('Hi')
解決方法:
在if/elif/else/while/for/def/class等語句末尾添加冒號(:)即可。牢記語法規則,多多練習多多敲代碼。
(7)錯誤地使用了中文標點符號
報錯信息:
SyntaxError: invalid character in identifier
錯誤示例1:
print('hello','world') # 錯誤原因:逗號是中文標點符號
錯誤示例2:
for i in range(10): # 錯誤原因:冒號是中文標點符號
解決方法:
除了字符串中可以有中文外,其它任何情況均使用英文狀態進行編輯。
IndentationError:unindent does not match any outer indentation level IndentationError:expected an indented block
錯誤示例:
a = 2 while a < 0: print('hello') a -= 1 else: print('0.0')
解決方法:
上述代碼中while語句體內的代碼縮進沒有對齊。正確使用縮進排版代碼。當代碼是從其它地方復制并粘貼過來的時候,這個錯誤較多見。
當變量名、函數名或類名等書寫錯誤,或者函數在定義之前就被調用等情況下,就會導致名字錯誤。報錯信息:
NameError: name 'pirnt' is not defined NameError: name 'sayhi' is not defined NameError: name 'pd' is not defined
錯誤示例1:
pirnt('hello world') # 錯誤原因:print拼寫錯誤。
錯誤示例2:
sayhi() def sayhi(): pass # 錯誤原因:在函數定義之前對函數進行調用。
錯誤示例3:
pd.read_excel(r'file.xlsx') # 錯誤原因:在調用pandas方法前并未導入pandas庫或者并未起別名為pd。
解決方法:
正確書寫變量名、函數名或類名等,在使用變量前先進行賦值,將函數的定義放在函數調用之前,在使用第三方庫前先進行導入、調包等等。即保證某個名字(標識符)先存在,才能被使用。
(1)整數和字符串不能進行連接操作
報錯信息:
TypeError: Can`t convert 'int' object to str implicitly TypeError: unsupported operand type(s) for + : 'float' and 'str'
錯誤示例1:
print('score:'+100)
錯誤示例2:
print(9.8 + 'seconds')
解決方法:
在整數、浮點數或布爾值與字符串進行連接操作之前,先使用str()函數將其轉換為字符串類型。
(2)調用函數時參數的個數不正確,或者未傳遞參數
報錯信息:
TypeError: input expected at most 1 arguments,got 2 TypeError: say() missing 1 required positional argument:'words'
錯誤示例1:
input('輸入姓名','年齡') # 錯誤原因:試圖給input()函數提供第2個參數。
錯誤示例2:
def say(words): print(words) say() # 錯誤原因:調用函數時未傳遞參數。
解決方法:
記住函數用法,了解函數的參數定義,使用正確的方法調用函數即可。
使用不存在的鍵名訪問字典中的元素,就會發生這個錯誤。報錯信息:
KeyError: 'c'
錯誤示例:
d = {'a':1,'b':2} print(d['c'])
解決方法:
在訪問字典中的元素時,先用in關鍵字檢測要訪問的鍵名是否存在,或者是使用字典和get()方法安全地訪問字典元素。
當訪問列表的索引超出列表范圍時,就會出現索引錯誤。報錯信息:
IndexError: list index out of range
錯誤示例:
a = [1,2,3] print(a[3]) # 錯誤原因:列表a中不存在第4個索引。列表的索引從0開始編號。
解決方法:
通過len()函數獲取列表的長度,然后判斷要訪問的索引是否超出列表范圍。
在函數中,如果對未聲明的全局變量進行修改操作,將會遇到這個錯誤。報錯信息:
UnboundLocalError: local variable 's' referenced before assignment
錯誤示例:
s = 1 def test(): s += 1 print(s) test() # 錯誤原因:在函數內對未聲明的全局變量s進行了自增操作。 # Python將變量s視為一個本地的局部變量,但該變量未初始化。
解決方法:
在函數內使用全局變量時,使用global關鍵字對其進行聲明即可。
報錯信息:
AttributeError: 'tuple' object has no attribute 'append' AttributeError: 'DataFrame' object has no attribute 'col'
錯誤示例1:
t = (1,2,3) t.append(4) # 錯誤原因:元祖不可變。
錯誤示例2:
df = pd.read_excel(r'data.xlsx') df.col # 錯誤原因:DataFrame沒有col屬性,應該為columns。
解決方法:
正確書寫類的屬性名,不要發生書寫錯誤。深刻理解元祖,列表的區別,可將元祖轉換為列表添加元素。
報錯信息:
ModuleNotFoundError: No module named 'pandas'
錯誤示例1:
import pandas as pd # 沒有導入成功,報上面錯誤。
解決方法:
這種報錯常見于兩種場景中,第一、未下載、安裝該模塊;第二、將調用的模塊路徑與被調用的模塊路徑不一致等。第一種情況直接下載安裝即可,在cmd中,pip install xxx;第二種情況電腦中可能存在多個版本的Python,建議保留一個常用的即可。
報錯信息:
FileNotFoundError: File b'E:\test\test_data.csv' does not exist
錯誤示例:
pd.read_csv('E:\test\test_data.csv') # 錯誤原因:路徑中包含'\t',系統錯誤地認為是制表符。
解決方法:
在確保該路徑下確實存在所寫文件后,在讀取文件路徑前面加'r',表示只讀,作為文件路徑讀取;或者使用雙斜杠'\ \'來進行轉義,形如:'E:\ \test\ \test_data.csv'。偶爾也會發生文件名、路徑的確寫錯,犯一些低級錯誤。
報錯,并不可怕,那是一個學習的機會。現在搜索引擎這么發達,只要把錯誤信息放進去,一搜就出來了各種解決之道。
關于Python3的十大經典錯誤及解決辦法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。