日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

[转载] Python3十大经典错误及解决办法

發(fā)布時間:2025/3/11 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] Python3十大经典错误及解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考鏈接: Python中的關(guān)鍵字2

◆ ◆ ◆? ◆ ◆

?

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

?

?一、 SyntaxError 語法錯誤

?(1)引號沒有成對出現(xiàn)

?報錯信息:

?1SyntaxError:EOL while scanning string literal

?

?

?錯誤示例:

?1string = 'hello world

?

?

?解決方法:字符串切記要放在引號中,單引號雙引號無所謂。當(dāng)一個字符串中包含單引號或雙引號時,很容易出現(xiàn)引號不配對的情況。

?(2)圓括號沒有成對出現(xiàn)

?報錯信息:

?1SyntaxError:unexpected EOF while parsing

?

?

?錯誤示例1:

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

?

?

?錯誤示例2:

?1print('hello world'

?

?

?解決方法:使圓括號成對出現(xiàn)。在書寫復(fù)雜的表達(dá)式或調(diào)用函數(shù)時會經(jīng)常遇到這個問題。

?(3)錯誤使用自操作運算符++或--等

?報錯信息:

?1SyntaxError:invalid syntax

?

?

?錯誤示例:

?1v = 64

2v++

?

?

?解決方法:在Python語言中,沒有類似C語言的++或--等自操作運算符。與之類似功能的用法是+=或-=運算符。例如,使用下面的代碼進行讓變量v進行自增1的操作。

?1v += 1

?

?

?(4)試圖使用等號(=)判斷兩個運算量是否相等

?報錯信息:

?1SyntaxError:invalid syntax

?

?

?錯誤示例:

?1if v=64:

2? ? print('hello world')

?

?

?解決方法:在Python語言中使用兩個等號(==)作為判斷兩個運算量是否相等的關(guān)系運算符,而等號(=)是賦值運算符。

?(6)錯誤使用Python語言關(guān)鍵字作為變量名

?報錯信息:

?1SyntaxError: can`t assign to keyword

?

?

?錯誤示例:

?1False= 1

?

?

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

?(7)忘記在if/elif/else/while/for/def/class等語句末尾添加冒號(:)

?報錯信息:

?1SyntaxError:invalid syntax

?

?

?錯誤示例1:

?1a = '12345'

2for i? in a

3? ? print(i)

?

?錯誤示例2:

?1def sayhi()

2? ? print('Hi')

?

?

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

?(8)錯誤地使用了中文標(biāo)點符號

?報錯信息:

?1SyntaxError: invalid character in identifier

?

?

?錯誤示例1:

?1print('hello','world')

2# 錯誤原因:逗號是中文標(biāo)點符號

?

?

?錯誤示例2:

?1for i in range(10):

2# 錯誤原因:冒號是中文標(biāo)點符號

?

?

?解決方法:除了字符串中可以有中文外,其它任何情況均使用英文狀態(tài)進行編輯。

?二、 IndentationError 縮進錯誤

?報錯信息:

?1IndentationError:unindent does not match any outer indentation level

2IndentationError:expected an indented block

?

?

?錯誤示例:

?1a = 2

2while a < 0:

3? ? ? print('hello')

4? ? a -= 1

5else:

6? ? print('0.0')

?

?解決方法:上述代碼中while語句體內(nèi)的代碼縮進沒有對齊。正確使用縮進排版代碼。當(dāng)代碼是從其它地方復(fù)制并粘貼過來的時候,這個錯誤較多見。

?三、 NameError 名字錯誤

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

?報錯信息:

?1NameError: name 'pirnt' is not defined

2NameError: name 'sayhi' is not defined

3NameError: name 'pd' is not defined

?

?

?錯誤示例1:

?1pirnt('hello world')

2# 錯誤原因:print拼寫錯誤。

?

?

?錯誤示例2:

?1sayhi()

2

3def sayhi():

4? ? pass

5# 錯誤原因:在函數(shù)定義之前對函數(shù)進行調(diào)用。

?

?

?錯誤示例3:

?1pd.read_excel(r'file.xlsx')

2# 錯誤原因:在調(diào)用pandas方法前并未導(dǎo)入pandas庫或者并未起別名為pd。

?

?

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

?四、 TypeError 類型錯誤

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

?報錯信息:

?1TypeError: Can`t convert 'int' object to str implicitly

2TypeError: unsupported operand type(s) for + : 'float' and 'str'

?

?

?錯誤示例1:

?1print('score:'+100)

?

?

?錯誤示例2:

?1print(9.8 + 'seconds')

?

?

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

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

?報錯信息:

?1TypeError: input expected at most 1 arguments,got 2

2TypeError: say() missing 1 required positional argument:'words'

?

?

?錯誤示例1:

?1input('輸入姓名','年齡')

2# 錯誤原因:試圖給input()函數(shù)提供第2個參數(shù)。

?

?

?錯誤示例2:

?1def say(words):

2? ? print(words)

3

4say()

5# 錯誤原因:調(diào)用函數(shù)時未傳遞參數(shù)。

?

?

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

?五、 KeyError 鍵錯誤

?使用不存在的鍵名訪問字典中的元素,就會發(fā)生這個錯誤。

?報錯信息:

?1KeyError: 'c'

?

?

?錯誤示例:

?1d = {'a':1,'b':2}

2print(d['c'])

?

?

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

?六、 IndexError 索引錯誤

?當(dāng)訪問列表的索引超出列表范圍時,就會出現(xiàn)索引錯誤。

?報錯信息:

?1IndexError: list index out of range

?

?

?錯誤示例:

?1a = [1,2,3]

2print(a[3])

3# 錯誤原因:列表a中不存在第4個索引。列表的索引從0開始編號。

?

?

?解決方法:通過len()函數(shù)獲取列表的長度,然后判斷要訪問的索引是否超出列表范圍。

?七、 UNboundLocalError 未初始化本地變量錯誤

?在函數(shù)中,如果對未聲明的全局變量進行修改操作,將會遇到這個錯誤。

?報錯信息:

?1UnboundLocalError: local variable 's' referenced before assignment

?

?

?錯誤示例:

?1s = 1

2

3def test():

4? ? s += 1

5? ? print(s)

6

7test()

8# 錯誤原因:在函數(shù)內(nèi)對未聲明的全局變量s進行了自增操作。

9# Python將變量s視為一個本地的局部變量,但該變量未初始化。

?

?

?解決方法:在函數(shù)內(nèi)使用全局變量時,使用global關(guān)鍵字對其進行聲明即可。

?八、 AttributeError 屬性錯誤

?報錯信息:

?1AttributeError: 'tuple' object has no attribute 'append'

2AttributeError: 'DataFrame' object has no attribute 'col'

?

?

?錯誤示例1:

?1t = (1,2,3)

2t.append(4)

3# 錯誤原因:元祖不可變。

?

?

?錯誤示例2:

?1df = pd.read_excel(r'data.xlsx')

2df.col

3# 錯誤原因:DataFrame沒有col屬性,應(yīng)該為columns。

?

?

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

?九、 ModuleNotFoundError 模塊不存在

?報錯信息:

?1ModuleNotFoundError: No module named 'pandas'

?

?

?錯誤示例1:

?1import pandas as pd

2# 沒有導(dǎo)入成功,報上面錯誤。

?

?

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

?十、 FileNotFoundError 文件不存在

?報錯信息:

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

?

?

?錯誤示例:

?1pd.read_csv('E:\test\test_data.csv')

2# 錯誤原因:路徑中包含'\t',系統(tǒng)錯誤地認(rèn)為是制表符。

?

?

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

?結(jié)束語

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

總結(jié)

以上是生活随笔為你收集整理的[转载] Python3十大经典错误及解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。