Python3之十大經典錯誤及其解決辦法

2021-01-11 CDA數據分析師

作者 | 嚴小樣兒來源 | 統計與數據分析實戰

接觸了很多Python愛好者,有初學者,亦有轉行人。不論大家學習Python的目的是什麼,總之,學習Python前期寫出來的代碼不報錯就是極好的。下面,嚴小樣兒為大家羅列出Python3十大經典錯誤及解決辦法,供大家學習。

一、 SyntaxError 語法錯誤

(1)引號沒有成對出現

報錯信息:

1SyntaxError:EOL while scanning string literal

錯誤示例:

1string = 'hello world

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

(2)圓括號沒有成對出現

報錯信息:

1SyntaxError:unexpected EOF while parsing

錯誤示例1:

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

錯誤示例2:

1print('hello world'

解決方法:使圓括號成對出現。在書寫複雜的表達式或調用函數時會經常遇到這個問題。

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

報錯信息:

1SyntaxError:invalid syntax

錯誤示例:

1v = 642v++

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

1v += 1

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

報錯信息:

1SyntaxError:invalid syntax

錯誤示例:

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

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

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

報錯信息:

1SyntaxError: can`t assign to keyword

錯誤示例:

1False= 1

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

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

報錯信息:

1SyntaxError:invalid syntax

錯誤示例1:

1a = '12345'2for i in a3 print(i)

錯誤示例2:

1def sayhi2 print('Hi')

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

(8)錯誤地使用了中文標點符號

報錯信息:

1SyntaxError: invalid character in identifier

錯誤示例1:

1print('hello','world')2# 錯誤原因:逗號是中文標點符號

錯誤示例2:

1for i in range(10):2# 錯誤原因:冒號是中文標點符號

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

二、 IndentationError 縮進錯誤

報錯信息:

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

錯誤示例:

1a = 22while a < 0:3 print('hello')4 a -= 15else:6 print('0.0')

解決方法:上述代碼中while語句體內的代碼縮進沒有對齊。正確使用縮進排版代碼。當代碼是從其它地方複製並粘貼過來的時候,這個錯誤較多見。

三、 NameError 名字錯誤

當變量名、函數名或類名等書寫錯誤,或者函數在定義之前就被調用等情況下,就會導致名字錯誤。

報錯信息:

1NameError: name 'pirnt' is not defined2NameError: name 'sayhi' is not defined3NameError: name 'pd' is not defined

錯誤示例1:

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

錯誤示例2:

1sayhi3def sayhi:4 pass5# 錯誤原因:在函數定義之前對函數進行調用。

錯誤示例3:

1pd.read_excel(r'file.xlsx')2# 錯誤原因:在調用pandas方法前並未導入pandas庫或者並未起別名為pd。

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

四、 TypeError 類型錯誤

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

報錯信息:

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

錯誤示例1:

1print('score:'+100)

錯誤示例2:

1print(9.8 + 'seconds')

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

(2)調用函數時參數的個數不正確,或者未傳遞參數

報錯信息:

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

錯誤示例1:

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

錯誤示例2:

1def say(words):2 print(words)4say5# 錯誤原因:調用函數時未傳遞參數。

解決方法:記住函數用法,了解函數的參數定義,使用正確的方法調用函數即可。

五、 KeyError 鍵錯誤

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

報錯信息:

1KeyError: 'c'

錯誤示例:

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

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

六、 IndexError 索引錯誤

當訪問列表的索引超出列表範圍時,就會出現索引錯誤。

報錯信息:

1IndexError: list index out of range

錯誤示例:

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

解決方法:通過len函數獲取列表的長度,然後判斷要訪問的索引是否超出列表範圍。

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

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

報錯信息:

1UnboundLocalError: local variable 's' referenced before assignment

錯誤示例:

1s = 13def test:4 s += 15 print(s)7test8# 錯誤原因:在函數內對未聲明的全局變量s進行了自增操作。9# Python將變量s視為一個本地的局部變量,但該變量未初始化。

解決方法:在函數內使用全局變量時,使用global關鍵字對其進行聲明即可。

八、 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.col3# 錯誤原因:DataFrame沒有col屬性,應該為columns。

解決方法:正確書寫類的屬性名,不要發生書寫錯誤。深刻理解元祖,列表的區別,可將元祖轉換為列表添加元素。

九、 ModuleNotFoundError 模塊不存在

報錯信息:

1ModuleNotFoundError: No module named 'pandas'

錯誤示例1:

1import pandas as pd2# 沒有導入成功,報上面錯誤。

解決方法:這種報錯常見於兩種場景中,第一、未下載、安裝該模塊;第二、將調用的模塊路徑與被調用的模塊路徑不一致等。第一種情況直接下載安裝即可,在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',系統錯誤地認為是制表符。

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

結束語

報錯,並不可怕,那是一個學習的機會。現在搜尋引擎這麼發達,只要把錯誤信息放進去,一搜就出來了各種解決之道。

相關焦點

  • 牧羊人之心連接不上伺服器怎麼辦 牧羊人之心網絡錯誤解決辦法
    牧羊人之心連接不上伺服器怎麼辦 牧羊人之心網絡錯誤解決辦法 牧羊人之心連接不上伺服器怎麼辦,相信各位小夥伴在體驗遊戲時最怕就是遊戲連接不上,好多小夥伴反映在登錄牧羊人之心時連接不上伺服器
  • 常見的80004005錯誤及其解決方法
    首頁 > 語言 > 關鍵詞 > 方法最新資訊 > 正文 常見的80004005錯誤及其解決方法
  • APEX英雄報錯game security怎麼解決?game security錯誤提示解決辦法
    最近有玩家遇到APEX英雄報錯問題,遊戲中出現錯誤提示「game security」怎麼解決?以下是錯誤代碼「game security」解決辦法說明,一起來了解一下吧。
  • UG安裝錯誤所有問題解決辦法
    所以要解決就得開始全面檢查你的許可證、許可證程序和環境變量。 許可證錯誤終究逃不出這三點。 注意不要把UG許可證放到UG主程序那個文件夾 2此應用程式無法與 NX FLEXlm 許可證伺服器連接。您的會話中發生了三個或三個以上的嚴重故障。
  • FF14排隊出現2002錯誤詳細解決辦法 連接大廳伺服器發生錯誤怎麼辦?
    FF14排隊出現2002錯誤詳細解決辦法 連接大廳伺服器發生錯誤怎麼辦? 最終幻想14最近國服的5.0新版本上線了,不過很多玩家在進入遊戲之後出現了提示「連接大廳伺服器發生錯誤」代號是2002,導致進不去遊戲,一些玩家還不知道該怎麼辦,下面就來為大家介紹一下解決辦法。
  • 光環士官長登錄錯誤 圖文解決辦法實測有用
    光環士官長合集 登錄xbox live時發生錯誤 圖文解決辦法 實測有用  2019年12月4日,《光環:士官長合集》(包括《光環:致遠星》)正式登錄steam,大數量玩家湧入的同時也遇到了大面積的問題反饋。
  • 零界之痕解壓錯誤什麼情況 零界之痕解壓錯誤解決辦法分享
    2020-11-22 10:31:47 來源: 電競八八掌 舉報   零界之痕解壓錯誤是怎麼回事
  • 蒼穹戰線網絡錯誤解決辦法 卡登陸界面該怎麼辦?[多圖]
    會提示網絡錯誤!一些小夥伴對網絡錯誤卡登錄界面的解決方法還不是很了解!下面就是遊戲鳥小編為大家帶來關於蒼穹戰線網絡錯誤解決辦法的資訊,希望能幫助到大家。網絡錯誤解決辦法:1、遊戲上線玩家過多,導致遊戲卡頓,玩家可嘗試稍後登陸。2、遊戲安裝包不完整。玩家可嘗試重新安裝遊戲。3、網絡問題。
  • 十大經典軍事小說,鐵血硬漢守家國,本本都是經典作品!
    關於優秀軍事小說類的經典作品一直都是層出不窮,精品無數,熱血,忠誠,至死不悔,總有那麼些平凡讓人覺得偉大!今天小編(我愛小小書)為大家推薦十大經典軍事小說,鐵血硬漢守家國,本本都是經典作品!分別是:《宰執天下》、《永不解密》、《三國之最風流》、《諜影風雲》、《梟臣》、《十國千嬌》、《國士無雙》、《家園》、《烽火逃兵》、《天下節度》。
  • 愛因斯坦十大經典名言:10 of his best quotes
    新東方網>英語>英語學習>英語閱讀>英語名言>正文愛因斯坦十大經典名言:10 of his best quotes 2012-04-11 16:20 來源:中國日報 作者:
  • 免疫組化常見問題及其解決辦法
    解決辦法是,每次使用新抗體前應當對其工作濃度進行測試,使每一抗體個體化,找到適合自己實驗室的理想工作濃度,既使是即用型的抗體也應如此,不能只簡單的按說明書進行染色。  (2)抗體孵育時間過長或溫度較高:解決辦法是,嚴格執行操作規程,最好隨身佩帶報時表或報時鐘,及時提醒,避免因遺忘而造成時間延長。
  • 發電機發不出電的原因及解決辦法
    發電機發不出電的原因及解決辦法 時間
  • TP-Link路由器連不上網的解決辦法
    TP-Link路由器連不上網的解決辦法 路由器之家 發表於 2020-06-12 11:13:05   tplink路由器不能上網的原因主要是:寬帶故障、設置錯誤、
  • ...山海》登陸失敗錯誤碼2007解決圖文教程 錯誤代碼2007是什麼意思
    ,該怎麼辦,怎麼解決這個問題,下面就來介紹下妄想山海錯誤代碼2007什麼意思。妄想山海錯誤代碼... 妄想山海錯誤代碼2007更新出現問題,該怎麼解決這個,此次也是需要很多玩家都在問的,終極測試到來了,該怎麼辦,怎麼解決這個問題,下面就來介紹下妄想山海錯誤代碼2007什麼意思。
  • 魔法門之英雄無敵2 A卡貼圖錯誤解決辦法
    魔法門之英雄無敵   魔法門之英雄無敵 A卡貼圖顯示問題解決方法:   1.首先卡開3D選項:
  • 路由器登錄密碼忘記的解決辦法
    打開APP 路由器登錄密碼忘記的解決辦法 智慧網絡2333 發表於 2020-11-18 11:16:22 當你路由器登錄密碼忘記了,這時候的解決辦法,小編建議按照下面的步驟來操作: 一、查看默認密碼 有些路由器是有默認登錄密碼的,可以在該路由器底部銘牌中,查看到默認登錄密碼信息,如下圖所示。
  • 中國搖滾十大經典揭曉 崔健領風騷
    中新網北京11月24日消息:逢千禧歲末,業界評選的「中國搖滾十大經典」揭曉。「中國搖滾第一人」崔健在「十大」中佔了三席。  由內地搖滾樂評界選出的「中國搖滾十大經典」,絕大多數都是耳熟能詳的曲目。其中,排名第一經典的《一無所有》是公認的中國搖滾代表之作。
  • 宮崎駿十大經典動畫電影(上篇)
    首先,來看看宮崎駿十大經典動畫電影上篇:01.宮崎駿十大經典動畫電影之《哈爾的移動城堡》年代:2004主要角色:蘇菲/哈爾劇情簡介:繼母因無力負擔生活,將蘇菲和她的兩個妹妹都送到了制帽店去當學徒。兩個妹妹很快先後就離開了制帽店去追尋各自的夢想,只有蘇菲堅持了下來。
  • 「CAD小技巧」CAD軟體老是出現致命錯誤解決辦法
    CAD是美國Autodesk開發的,出現致命錯誤的原因會有很多,有些是我們無意中造成的,比如安裝路徑為中文(美國開發的軟體,對中文支持肯定是不太好的),或者圖形文件轉圖圖形卡死,甚至無故就出現致命錯誤,總之原因非常多,避免不了,我們就發現致命錯誤去解決它,這裡我以2010為例出現致命錯誤的解決方法
  • 恆溫電烙鐵溫度失控的解決辦法
    打開APP 恆溫電烙鐵溫度失控的解決辦法 網絡整理 發表於 2020-04-08 11:39:37   恆溫電烙鐵內部採用高居裡溫度條狀的