【Python基礎】Python3十大經典錯誤及解決辦法

2021-02-21 機器學習初學者
接觸了很多Python愛好者,有初學者,亦有轉行人。不論大家學習Python的目的是什麼,總之,學習Python前期寫出來的代碼不報錯就是極好的。下面,我們為大家羅列出Python3十大經典錯誤及解決辦法,供大家學習。一、 SyntaxError 語法錯誤(1)引號沒有成對出現

1SyntaxError:EOL while scanning string literal

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

1SyntaxError:unexpected EOF while parsing

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

解決方法:
使圓括號成對出現。在書寫複雜的表達式或調用函數時會經常遇到這個問題。(3)錯誤使用自操作運算符++或--等

1SyntaxError:invalid syntax

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

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

1SyntaxError:invalid syntax

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

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

1SyntaxError: can`t assign to keyword

解決方法:
不要使用Python語言關鍵字作為變量名、函數名或類名等。在Python Shell窗口中,使用help('keywords')指令可以查看Python語言的關鍵字列表。(7)忘記在if/elif/else/while/for/def/class等語句末尾添加冒號(:)

1SyntaxError:invalid syntax

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

1def sayhi()
2    print('Hi')

解決方法:
在if/elif/else/while/for/def/class等語句末尾添加冒號(:)即可。牢記語法規則,多多練習多多敲代碼。(8)錯誤地使用了中文標點符號

1SyntaxError: invalid character in identifier

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

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

解決方法:
除了字符串中可以有中文外,其它任何情況均使用英文狀態進行編輯。二、 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語句體內的代碼縮進沒有對齊。正確使用縮進排版代碼。當代碼是從其它地方複製並粘貼過來的時候,這個錯誤較多見。三、 NameError 名字錯誤當變量名、函數名或類名等書寫錯誤,或者函數在定義之前就被調用等情況下,就會導致名字錯誤。

1NameError: name 'pirnt' is not defined
2NameError: name 'sayhi' is not defined
3NameError: name 'pd' is not defined

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

1sayhi()
2
3def sayhi():
4    pass
5# 錯誤原因:在函數定義之前對函數進行調用。

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

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

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

解決方法:
在整數、浮點數或布爾值與字符串進行連接操作之前,先使用str()函數將其轉換為字符串類型。(2)調用函數時參數的個數不正確,或者未傳遞參數

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

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

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

解決方法:
記住函數用法,了解函數的參數定義,使用正確的方法調用函數即可。五、 KeyError 鍵錯誤使用不存在的鍵名訪問字典中的元素,就會發生這個錯誤。

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 = 1
2
3def test():
4    s += 1
5    print(s)
6
7test()
8# 錯誤原因:在函數內對未聲明的全局變量s進行了自增操作。
9# Python將變量s視為一個本地的局部變量,但該變量未初始化。

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

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

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

1df = pd.read_excel(r'data.xlsx')
2df.col
3# 錯誤原因:DataFrame沒有col屬性,應該為columns。

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

1ModuleNotFoundError: No module named 'pandas'

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

解決方法:
這種報錯常見於兩種場景中,第一、未下載、安裝該模塊;第二、將調用的模塊路徑與被調用的模塊路徑不一致等。第一種情況直接下載安裝即可,在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'。偶爾也會發生文件名、路徑的確寫錯,犯一些低級錯誤。結束語報錯,並不可怕,那是一個學習的機會。現在搜尋引擎這麼發達,只要把錯誤信息放進去,一搜就出來了各種解決之道。

相關焦點

  • Python3十大經典錯誤及解決辦法
    下面,嚴小樣兒為大家羅列出Python3十大經典錯誤及解決辦法,供大家學習。一、 SyntaxError 語法錯誤(1)引號沒有成對出現1SyntaxError:EOL while scanning string literal解決方法:字符串切記要放在引號中,單引號雙引號無所謂。
  • Python3之十大經典錯誤及其解決辦法
    下面,嚴小樣兒為大家羅列出Python3十大經典錯誤及解決辦法,供大家學習。128錯誤示例2:1print('hello world'解決方法:使圓括號成對出現。')2# 錯誤原因:逗號是中文標點符號錯誤示例2:1for i in range(10):2# 錯誤原因:冒號是中文標點符號解決方法:除了字符串中可以有中文外,其它任何情況均使用英文狀態進行編輯。
  • Python中 十大經典錯誤及解決辦法
    下面,嚴小樣兒為大家羅列出Python3十大經典錯誤及解決辦法,供大家學習。一、 SyntaxError 語法錯誤(1)引號沒有成對出現1SyntaxError:EOL while scanning string literal解決方法:字符串切記要放在引號中,單引號雙引號無所謂。
  • Python3與Python2 區別
    接天蓮葉無窮碧,映日荷花別樣紅--楊萬裡《曉出淨慈寺送林子方》1、整數相除: python2結果為整數, 捨棄餘數部分;python3
  • python基礎:range方法在Python2和Python3中的不同
    range方法詳解range(start, stop[, step])range是python中的其中一個內置函數作用:可創建一個整數列表。一般用在 for 循環中。range(0, 5)step:步長,既下一次生成的數和這次生成的數的差,例如range(1, 10, 2) 生成[1,3,5,7,9],再如range(1,10,3) 生成[1, 4, 7]代碼示例:使用區別在python2中,range方法得到的結果就是一個確定的列表對象,列表對象所擁有的方法,range方法生成的結果對象都可以直接使用,而在python3
  • 初學Python的十大經典錯誤及解決辦法
    (7)錯誤地使用了中文標點符號1SyntaxError: invalid character in identifier1print('hello','world')2# 錯誤原因:逗號是中文標點符號1for i in range(10):2# 錯誤原因:冒號是中文標點符號解決方法:除了字符串中可以有中文外
  • 腦科學方向|Python3的安裝與環境搭建
    本節來學習python3的安裝與環境搭建。考慮到大部分人的需求與原有經驗,之後的學習都會以 windows 10(64位) 作業系統為系統平臺,而不是Ubuntu 16等linux系統。具體要安裝的python版本是必須決定的首件事情,這裡選擇python 3.7.2,當然,也可以選擇其他python3.6以上的版本。
  • 未明學院:Python2與Python3的主要區別
    python2 的代碼混亂,重複較多,冗餘。python3源碼規範、清晰、簡單優美。編碼方式,但是ASCII編碼無法對中文等字符進行有效編碼,因此在涉及到中文等其他字符的編碼問題時,ASCII不僅無能為力,而且經常帶來一些亂七八糟的錯誤,這也是Python2中經常出現編碼錯誤的原因之一。
  • python os.listdir()亂碼解決方案
    有些人會使用os.remove來進行文件的清楚,從而導致一些錯誤的出現,可以說這是對於os.remove的用法還沒有熟練掌握。下面我們就os.remove的詳細用法及使用注意分別介紹。計算機一般來說是需要定期的清理,系統的內存不能無限延伸,同時有一些不需要的文件也可以得以清除掉。
  • Python 十大經典錯誤及應對策略
    下面將為大家羅列出 Python3 十大經典錯誤及解決辦法,供大家學習。一、 SyntaxError 語法錯誤(1)引號沒有成對出現1SyntaxError:EOL while scanning string literal解決方法:字符串切記要放在引號中,單引號雙引號無所謂。
  • python3基礎之生成器
    初識生成器說到生成器還是要從列表推導式說起,關於列表推導式可以看看《python3基礎之如何使用列表推導式》。看來python裡應該沒有元組推導式了。現在已經知道生成器長什麼樣了,那生成器又有什麼用呢?寫個例子測試一下吧:這麼看生成器和列表好像是一樣的,那要生成器幹什麼呢?實際上生成器像是保存了一套算法的一個對象,剛開始的時候並它沒有實際的值,只有在使用時才去生成。也就是說到第二for執行之前list2裡並沒有2和3這兩個值。
  • Python3長徵路第004天--BeautifulSoup庫你也報錯的時候!
    文/愛琳玩python今天是python長徵之路的第四天了,感覺時間過得還是挺快的,在這裡還是先感謝你的點擊加閱讀,對我python3長徵之路的支持,在做這個python3長徵之路時,我有想過放棄,因為我畢竟學歷很低,不怕各位朋友笑話,我就一個高中生,而且還是個讀了4年的高中生,到最後都沒有考起大學的這麼一個人,當我在出生社會後,換過很多工作,心中卻依然放不下高中時的一個夢想
  • 小白python入門基礎——Python安裝教程
    你將驚喜地發現Python語言是多麼地簡單,它注重的是如何解決問題而不是程式語言的語法和結構。 Python vs Java作為世界上使用範圍最廣的程式語言,Java難免總是被拿來跟Python比較,而且,在程式語言的各種對戰中,Python 與Java也是打得最熱烈的。那到底是Python好還是Java好?
  • 推薦一個非常優秀的python編程開發庫:強大而又高效的Anaconda
    python優先級的調節Linux安裝好了之後,一般有python2和python3,linux默認的是python2,但是現在python可能馬上就要被淘汰了,所以我們平時都是使用python3,或者pip3,這樣相對來說費事一些
  • 新手看懂這篇Python入門基礎知識總結就可以進入下階段學習
    一張圖學會python網上搜索一張圖學會python,雖然誇張,但是python基礎的知識都包括在裡面。還有這張圖的內容是python2的,好像沒有python3的;可能有,只是我沒有找到。總結一下Python入門基礎知識後綴文件名用.py為後綴,python3文件名用中文也可以運行;python文件自己用的可以中文,如果線上項目或者多人合作的時候,就用英文命名。注釋Python中單行注釋以#開頭,多行注釋可以左右各三個單引號或者雙引號。
  • 利用Anaconda在Windows及Linux下搭建Python環境【手把手版】
    ❞一、同系列文章本文是Python數據分析基礎系列文章的第20篇❝python3基礎01數值和字符串(一)python3基礎02數值和字符串(二)python3基礎03列表(list)和元組(tuple)python3基礎04字典(dict)和集合(set)python3基礎
  • 【Python面試】談談對 Python3 和 Python2 的區別?​
    小猿會從最基礎的面試題開始,每天一題。如果參考答案不夠好,或者有錯誤的話,麻煩大家可以在留言區給出自己的意見和討論,大家是要一起學習的 。廢話不多說,開始今天的題目:問:談談Python3 和 Python2 的區別?
  • python爬蟲基礎之urllib的使用
    這篇文章主要介紹了python爬蟲基礎之urllib的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下一
  • python語言在全球廣泛應用
    關於自動化機器學習的研究的熱度越來越高,可是大學在給學生普及機器學習的基礎知識的時候,首先就讓學生去看最簡單的一些簡單的helloworld,拿個scrapy框架去跑一下數據。問題出在哪?很簡單,還是不能去理解如何利用一些簡單的python語法去實現這些簡單的功能。
  • Python基礎篇-13 Python不是內部或外部命令的解決方法
    Hello,大家好,我是小777很多小白不知道Python基礎從哪裡開始學習,從今開始我每日會分享一篇從零基礎學Python編程基礎。還有很多不知道學Python能幹什麼?在這裡我會為大家一一分享,我感覺還是很有意思的。雖然對於那些會的人不難,但是對於小白來說這確實是很好的一種學習思路。