溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python3的十大經(jīng)典錯(cuò)誤及解決辦法

發(fā)布時(shí)間:2021-10-28 16:19:40 來(lái)源:億速云 閱讀:159 作者:柒染 欄目:編程語(yǔ)言

這篇文章給大家介紹Python3的十大經(jīng)典錯(cuò)誤及解決辦法,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

接觸了很多Python愛好者,有初學(xué)者,亦有轉(zhuǎn)行人。不論大家學(xué)習(xí)Python的目的是什么,總之,學(xué)習(xí)Python前期寫出來(lái)的代碼不報(bào)錯(cuò)就是極好的。下面,嚴(yán)小樣兒為大家羅列出Python3十大經(jīng)典錯(cuò)誤及解決辦法,供大家學(xué)習(xí)。

一、 SyntaxError 語(yǔ)法錯(cuò)誤

(1)引號(hào)沒有成對(duì)出現(xiàn)

報(bào)錯(cuò)信息:

SyntaxError:EOL while scanning string literal

錯(cuò)誤示例:

string = 'hello world

解決方法:

字符串切記要放在引號(hào)中,單引號(hào)雙引號(hào)無(wú)所謂。當(dāng)一個(gè)字符串中包含單引號(hào)或雙引號(hào)時(shí),很容易出現(xiàn)引號(hào)不配對(duì)的情況。

(2)圓括號(hào)沒有成對(duì)出現(xiàn)

報(bào)錯(cuò)信息:

SyntaxError:unexpected EOF while parsing

錯(cuò)誤示例1:

result = (1024+(512*2)/128

錯(cuò)誤示例2:

print('hello world'

解決方法:

使圓括號(hào)成對(duì)出現(xiàn)。在書寫復(fù)雜的表達(dá)式或調(diào)用函數(shù)時(shí)會(huì)經(jīng)常遇到這個(gè)問題。

(3)錯(cuò)誤使用自操作運(yùn)算符++或--等

報(bào)錯(cuò)信息:

SyntaxError:invalid syntax

錯(cuò)誤示例:

v = 64 v++

解決方法:

在Python語(yǔ)言中,沒有類似C語(yǔ)言的++或--等自操作運(yùn)算符。與之類似功能的用法是+=或-=運(yùn)算符。例如,使用下面的代碼進(jìn)行讓變量v進(jìn)行自增1的操作。

v += 1

(4)試圖使用等號(hào)(=)判斷兩個(gè)運(yùn)算量是否相等

報(bào)錯(cuò)信息:

SyntaxError:invalid syntax

錯(cuò)誤示例:

if v=64:2    print('hello world')

解決方法:

在Python語(yǔ)言中使用兩個(gè)等號(hào)(==)作為判斷兩個(gè)運(yùn)算量是否相等的關(guān)系運(yùn)算符,而等號(hào)(=)是賦值運(yùn)算符。

(5)錯(cuò)誤使用Python語(yǔ)言關(guān)鍵字作為變量名

報(bào)錯(cuò)信息:

SyntaxError: can`t assign to keyword

錯(cuò)誤示例:

False= 1

解決方法:

不要使用Python語(yǔ)言關(guān)鍵字作為變量名、函數(shù)名或類名等。在Python  Shell窗口中,使用help('keywords')指令可以查看Python語(yǔ)言的關(guān)鍵字列表。

(6)忘記在if/elif/else/while/for/def/class等語(yǔ)句末尾添加冒號(hào)(:)

報(bào)錯(cuò)信息:

SyntaxError:invalid syntax

錯(cuò)誤示例1:

a = '12345' for i  in a     print(i)

錯(cuò)誤示例2:

def sayhi()     print('Hi')

解決方法:

在if/elif/else/while/for/def/class等語(yǔ)句末尾添加冒號(hào)(:)即可。牢記語(yǔ)法規(guī)則,多多練習(xí)多多敲代碼。

(7)錯(cuò)誤地使用了中文標(biāo)點(diǎn)符號(hào)

報(bào)錯(cuò)信息:

SyntaxError: invalid character in identifier

錯(cuò)誤示例1:

print('hello','world') # 錯(cuò)誤原因:逗號(hào)是中文標(biāo)點(diǎn)符號(hào)

錯(cuò)誤示例2:

for i in range(10): # 錯(cuò)誤原因:冒號(hào)是中文標(biāo)點(diǎn)符號(hào)

解決方法:

除了字符串中可以有中文外,其它任何情況均使用英文狀態(tài)進(jìn)行編輯。

二、 IndentationError 縮進(jìn)錯(cuò)誤報(bào)錯(cuò)信息:

IndentationError:unindent does not match any outer indentation level IndentationError:expected an indented block

錯(cuò)誤示例:

a = 2 while a < 0:       print('hello')     a -= 1 else:     print('0.0')

解決方法:

上述代碼中while語(yǔ)句體內(nèi)的代碼縮進(jìn)沒有對(duì)齊。正確使用縮進(jìn)排版代碼。當(dāng)代碼是從其它地方復(fù)制并粘貼過(guò)來(lái)的時(shí)候,這個(gè)錯(cuò)誤較多見。

三、 NameError 名字錯(cuò)誤

當(dāng)變量名、函數(shù)名或類名等書寫錯(cuò)誤,或者函數(shù)在定義之前就被調(diào)用等情況下,就會(huì)導(dǎo)致名字錯(cuò)誤。報(bào)錯(cuò)信息:

NameError: name 'pirnt' is not defined NameError: name 'sayhi' is not defined NameError: name 'pd' is not defined

錯(cuò)誤示例1:

pirnt('hello world') # 錯(cuò)誤原因:print拼寫錯(cuò)誤。

錯(cuò)誤示例2:

sayhi()  def sayhi():     pass # 錯(cuò)誤原因:在函數(shù)定義之前對(duì)函數(shù)進(jìn)行調(diào)用。

錯(cuò)誤示例3:

pd.read_excel(r'file.xlsx') # 錯(cuò)誤原因:在調(diào)用pandas方法前并未導(dǎo)入pandas庫(kù)或者并未起別名為pd。

解決方法:

正確書寫變量名、函數(shù)名或類名等,在使用變量前先進(jìn)行賦值,將函數(shù)的定義放在函數(shù)調(diào)用之前,在使用第三方庫(kù)前先進(jìn)行導(dǎo)入、調(diào)包等等。即保證某個(gè)名字(標(biāo)識(shí)符)先存在,才能被使用。

四、 TypeError 類型錯(cuò)誤

(1)整數(shù)和字符串不能進(jìn)行連接操作

報(bào)錯(cuò)信息:

TypeError: Can`t convert 'int' object to str implicitly TypeError: unsupported operand type(s) for + : 'float' and 'str'

錯(cuò)誤示例1:

print('score:'+100)

錯(cuò)誤示例2:

print(9.8 + 'seconds')

解決方法:

在整數(shù)、浮點(diǎn)數(shù)或布爾值與字符串進(jìn)行連接操作之前,先使用str()函數(shù)將其轉(zhuǎn)換為字符串類型。

(2)調(diào)用函數(shù)時(shí)參數(shù)的個(gè)數(shù)不正確,或者未傳遞參數(shù)

報(bào)錯(cuò)信息:

TypeError: input expected at most 1 arguments,got 2 TypeError: say() missing 1 required positional argument:'words'

錯(cuò)誤示例1:

input('輸入姓名','年齡') # 錯(cuò)誤原因:試圖給input()函數(shù)提供第2個(gè)參數(shù)。

錯(cuò)誤示例2:

def say(words):     print(words)  say() # 錯(cuò)誤原因:調(diào)用函數(shù)時(shí)未傳遞參數(shù)。

解決方法:

記住函數(shù)用法,了解函數(shù)的參數(shù)定義,使用正確的方法調(diào)用函數(shù)即可。

五、 KeyError 鍵錯(cuò)誤

使用不存在的鍵名訪問字典中的元素,就會(huì)發(fā)生這個(gè)錯(cuò)誤。報(bào)錯(cuò)信息:

KeyError: 'c'

錯(cuò)誤示例:

d = {'a':1,'b':2} print(d['c'])

解決方法:

在訪問字典中的元素時(shí),先用in關(guān)鍵字檢測(cè)要訪問的鍵名是否存在,或者是使用字典和get()方法安全地訪問字典元素。

六、 IndexError 索引錯(cuò)誤

當(dāng)訪問列表的索引超出列表范圍時(shí),就會(huì)出現(xiàn)索引錯(cuò)誤。報(bào)錯(cuò)信息:

IndexError: list index out of range

錯(cuò)誤示例:

a = [1,2,3] print(a[3]) # 錯(cuò)誤原因:列表a中不存在第4個(gè)索引。列表的索引從0開始編號(hào)。

解決方法:

通過(guò)len()函數(shù)獲取列表的長(zhǎng)度,然后判斷要訪問的索引是否超出列表范圍。

七、 UNboundLocalError 未初始化本地變量錯(cuò)誤

在函數(shù)中,如果對(duì)未聲明的全局變量進(jìn)行修改操作,將會(huì)遇到這個(gè)錯(cuò)誤。報(bào)錯(cuò)信息:

UnboundLocalError: local variable 's' referenced before assignment

錯(cuò)誤示例:

s = 1  def test():     s += 1     print(s)  test() # 錯(cuò)誤原因:在函數(shù)內(nèi)對(duì)未聲明的全局變量s進(jìn)行了自增操作。 # Python將變量s視為一個(gè)本地的局部變量,但該變量未初始化。

解決方法:

在函數(shù)內(nèi)使用全局變量時(shí),使用global關(guān)鍵字對(duì)其進(jìn)行聲明即可。

八、 AttributeError 屬性錯(cuò)誤

報(bào)錯(cuò)信息:

AttributeError: 'tuple' object has no attribute 'append' AttributeError: 'DataFrame' object has no attribute 'col'

錯(cuò)誤示例1:

t = (1,2,3) t.append(4) # 錯(cuò)誤原因:元祖不可變。

錯(cuò)誤示例2:

df = pd.read_excel(r'data.xlsx') df.col # 錯(cuò)誤原因:DataFrame沒有col屬性,應(yīng)該為columns。

解決方法:

正確書寫類的屬性名,不要發(fā)生書寫錯(cuò)誤。深刻理解元祖,列表的區(qū)別,可將元祖轉(zhuǎn)換為列表添加元素。

九、 ModuleNotFoundError 模塊不存在

報(bào)錯(cuò)信息:

ModuleNotFoundError: No module named 'pandas'

錯(cuò)誤示例1:

import pandas as pd # 沒有導(dǎo)入成功,報(bào)上面錯(cuò)誤。

解決方法:

這種報(bào)錯(cuò)常見于兩種場(chǎng)景中,第一、未下載、安裝該模塊;第二、將調(diào)用的模塊路徑與被調(diào)用的模塊路徑不一致等。第一種情況直接下載安裝即可,在cmd中,pip  install xxx;第二種情況電腦中可能存在多個(gè)版本的Python,建議保留一個(gè)常用的即可。

十、 FileNotFoundError 文件不存在

報(bào)錯(cuò)信息:

FileNotFoundError: File b'E:\test\test_data.csv' does not exist

錯(cuò)誤示例:

pd.read_csv('E:\test\test_data.csv') # 錯(cuò)誤原因:路徑中包含'\t',系統(tǒng)錯(cuò)誤地認(rèn)為是制表符。

解決方法:

在確保該路徑下確實(shí)存在所寫文件后,在讀取文件路徑前面加'r',表示只讀,作為文件路徑讀取;或者使用雙斜杠'\ \'來(lái)進(jìn)行轉(zhuǎn)義,形如:'E:\ \test\  \test_data.csv'。偶爾也會(huì)發(fā)生文件名、路徑的確寫錯(cuò),犯一些低級(jí)錯(cuò)誤。

報(bào)錯(cuò),并不可怕,那是一個(gè)學(xué)習(xí)的機(jī)會(huì)?,F(xiàn)在搜索引擎這么發(fā)達(dá),只要把錯(cuò)誤信息放進(jìn)去,一搜就出來(lái)了各種解決之道。

關(guān)于Python3的十大經(jīng)典錯(cuò)誤及解決辦法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI