程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

千萬不要忽略這些python常見報錯信息

編輯:Python

嗨害大家好鴨,我是小熊貓啦

在使用Python時,作為萌新的我總是會粗心的掉這掉那,運行時就會出現各式各樣的錯誤,因此寫這麼一篇博客,來總結下編寫代碼的一些常見錯誤以及解決辦法。


有什麼python相關報錯解答自己不會的、或者源碼資料/模塊安裝/女裝大佬精通技巧 都可以來這裡:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者文末私號問我

NameError

報錯:

>>> print(a)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print(a)
NameError: name 'a' is not defined

NameError
名稱錯誤

原因及解決方案:

  • 先給a賦值,才能使用它。當出現NameError時,絕大多數情況不是沒被賦值,而是我們將單詞拼錯,或大小寫沒注意到。因此要回頭好好檢查下哪裡錯了。

SyntaxErrorError

報錯:

#錯誤1
>>> a = 1
>>> if a:
print(1)
SyntaxError: expected an indented block
#錯誤2
>>> if a<b :
SyntaxError: invalid character in identifier
#錯誤3
>>> print('a)
SyntaxError: EOL while scanning string literal

SyntaxError
語法錯誤,代碼形式錯誤

原因及解決方案:

  • 錯誤1:沒有縮進或者縮進格式錯誤。最常見的問題就是在於Tab和Space的混用。其實在多數編輯器上轉行是會自動補好縮進的,如果實在不確定,可以手動按一下Tab或敲4下Space(更建議後者)。切記Tab和Space不要同時按或混著多按。
  • 錯誤2:絕大多數情況下出現這個錯誤是因為寫代碼時混用了中文標點,在不經意時按了Shift切換成了中文字符。在敲代碼時,要多注意注意輸入法是不是不小心改變了
  • 錯誤3:出現錯誤3,真的是非常非常非常不小心了。多出現在引號不對稱或缺少引號的情況下。這時你應該檢查下你的代碼哪裡的顏色有點奇怪。在多數編輯器中,輸入單個引號後,如果沒有另一個引號與之對應,")"的顏色或者代碼的顏色會顯得很奇怪

AttributeError

報錯:

>>> a = list()
>>> a.add('1')
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
a.add('1')
AttributeError: 'list' object has no attribute 'add'

AttributeError
賦值異常

原因及解決方案:

  • 出現這種錯誤主要是因為混用了語法。如上例:a是一個空列表,而往列表中添加元素是append,即本應用a.append(‘1’)。而a.add()是用於往集合中添加元素的,這種語法的混用,導致了AttributeError。

TypeError

報錯:

#錯誤1
>>>a = input('Enter a number:')
>>>print(a/2)
Enter a number:1
Traceback (most recent call last):
File "C:\Users\acer\Desktop\測試1.py", line 2, in <module>
print(a/2)
TypeError: unsupported operand type(s) for /: 'str' and 'int'
#錯誤2
>>> for i in range(1,2,2,3):
print(i)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
for i in range(1,2,2,3):
TypeError: range expected at most 3 arguments, got 4

TypeError
類型錯誤

原因及解決方案:

  • 錯誤1:如上例,input()返回的是一個字符串類型的值,而字符串顯而易見是不能直接與數字進行運算,因此出現了TypeError。解決該問題的關鍵在於你需要得到的是什麼類型的值。若需要數值型,可在input()前加上eval(),即可返回數值型。若只需要整型,可加上int()。以此類推。
  • 錯誤2:參數個數錯誤。range()最多只能有三個參數(start,end,index),但輸入了4個參數,因此出現TypeError。該問題主要出現於對函數的不熟悉上。可通過help()先查看函數的具體用法,再添加合適的參數進行使用。

IndexError

報錯:

>>> a = list()
>>> a.append('1,2,3,a,b');a
['1,2,3,a,b']
>>> a[5]
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
a[5]
IndexError: list index out of range
>>>

IndexError
索引錯誤

原因及解決方案:

  • 出現該錯誤主要原因在於索引不存在或超過序列范圍。如上例:列表a只有5個元素**(切記:Python中索引都是從0開始)**,因此a[6]需要返回的是第6個元素,而總共只有5個元素。故出現該錯誤。多數情況是因為忘記了“從0開始”這個原則導致出現這種錯誤,改變下索引值便可解決。

ValueError

報錯:

>>> a = "abc"
>>> int(a)
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
int(a)
ValueError: invalid literal for int() with base 10: 'abc'

ValueError
值錯誤
原因及解決方案:

出現這種錯誤主要原因是傳給對象的參數類型不准確。如上例,a是一個字符串類型,而int()需要傳入的是數值型,故出現了上述錯誤。解決起來也很容易,只用改變輸入值的類型即可。

KeyError

報錯:

>>> d={'a':1,'b':2,'c':3}
>>> d['a']
1
>>> d['f']
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
d['f']
KeyError: 'f'

KeyError
字典鍵值錯誤

原因及解決方案:

  • 常見於字典中。如上例,字典d只有a,b,c三個鍵及對應的鍵值。而想得到的是d[‘f’],明顯是不存在的,故出現了該錯誤,可能因為漏填鍵及鍵值導致。通過訪問已存在的鍵值(如a,b,c)來解決。

FileNotFoundError

報錯:

#在該目錄下並沒有hello,py這個文件
>>> f = open('hello.py')
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
f = open('hello.py')
FileNotFoundError: [Errno 2] No such file or directory: 'hello.py'

FileNotFoundError
文件不存在錯誤

原因及解決方案:

  • 常用於對文件的處理。由於輸入文件名的不存在所導致的錯誤。查看該目錄下是否存在目標文件,或將目標移至該目錄下再進行open()

ps:
如何查看python解釋器當前路徑及目錄下的文件:

#查看目錄
import os
os.getcwd()
'C:\\Users\\acer\\Desktop'
#查看目錄下的文件
os.listdir('C:\\Users\\acer\\Desktop')

#,及對\的轉義。若存在多個\需要轉義也可通過r,即os.listdir(r’C:\Users\acer\Desktop’)解決。**切記當使用了r後,不能在句末再加入\

io.UnsupportedOperation

報錯:

>>> f = open('測試1.py')
>>> f.write("test")
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
f.write("test")
io.UnsupportedOperation: not writable

io.UnsupportedOperation
文件權限問題報錯(上例中是用的f.write,故為not writable

原因及解決方案:

  • open(“測試1.py”)如果入參沒有加讀寫模式參數mode,說明默認打開文件的方式為只讀方式,而此時又要寫入字符,所以權限受限,才會報錯。可通過更改模式解決,即>>>
    f=open(“測試1.py”,‘w+’)。

上述即為Python學習中常見的一些錯誤。

有什麼python相關報錯解答自己不會的、或者源碼資料/模塊安裝/女裝大佬精通技巧 都可以來這裡:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者文末私號問我

今天的文章就是這樣啦 我是小熊貓 咱下篇文章再見啦(*◡‿◡)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved