在学习Python语言编程的最初几周内,初学者会遇到大量的语法错误及其他错误。但是只要坚持克服困难,经过一段时间的编程训练,这些错误就会显著减少。下面列出了常见的一些错误及其解决方法,供初学者备查。
1. SyntaxError语法错误
(1)用来表示字符串的引号没有成对出现。
报错信息:
SyntaxError: EOL while scanning stringliteral
错误示例:
print(‘hello)
解决方法:
将字符串放在一对双引号内。当一个字符串中包含单引号或双引号时,很容易出现引号不配对的情况。
(2)圆括号没有成对出现。
报错信息:
SyntaxError: unexpected EOF while parsing
错误示例1:
a= (1 (2 / 3) * 4
错误示例2:
print(‘hello’
解决方法:
使圆括号成对出现。在书写复杂的表达式或调用函数时会经常遇到这个错误。
(3)调用print()函数时使用了Python 2的语法。
报错信息:
SyntaxError: Missing parentheses in call to’print’
错误示例:
print ‘hello’
解决方法:
使用Python 3的语法格式调用print()函数,即print(‘hello’)。当初学者从Python 2转到Python 3时,往往会习惯性地犯这个错误。
(4)错误使用自操作运算符 或–等。
报错信息:
SyntaxError: invalid syntax
错误示例:
a = 1
a
解决方法:
在Python语言中,没有类似C语言的 或–等自操作运算符。与之类似功能的用法是 =或-=运算符。例如,使用下面代码进行让变量a进行自增1的操作。
a = 1
(5)试图使用等号(=)来判断两个运算量是否相等。
报错信息:
SyntaxError: invalid syntax
错误示例:
if a = 1:
print(‘hello’)
解决方法:
在Python语言中使用两个等号(==)作为判断两个运算量是否相等的关系运算符,而等号(=)是赋值运算符。
(6)误用Python语言关键字作为变量名。
报错信息:
SyntaxError: can’t assign to keyword
错误示例:
True = 1
解决方法:
不要使用Python语言关键字作为变量名、函数名或类名等。在Python Shell窗口中,使用help(‘keywords’)指令可以查看Python语言的关键字列表。
(7)忘记在if/elif/else/while/for/def/class等语句末尾添加冒号(:)。
报错信息:
SyntaxError: invalid syntax
错误示例1:
a = 2
if a > 0
print(‘ ’)
错误示例2:
def sayhello()
print(‘hello’)
解决方法:
在if/elif/else/while/for/def/class等语句末尾添加冒号(:)即可。牢记语法规则,习惯成自然。
2. IndentationError缩进错误
报错信息:
IndentationError: unindent does not matchany outer indentation level
IndentationError: expected an indentedblock
错误示例:
a = 2
if a > 0:
print(‘ ’)
print(a)
else:
print(‘-’)
注:错误原因是上述代码中if语句体内的代码缩进没有对齐。
解决方法:
正确使用缩进排版代码。当代码是从它处复制粘贴过来的时候,这个错误较为常见。
3. NameError名字错误
当变量名、函数名或类名等书写错误,或者是函数在定义之前就被函数等情况下,就会导致名字错误。
报错信息:
NameError: name ‘pirnt’ is not defined
NameError: name ‘sayhello’ is not defined
错误示例1:
pirnt(‘hello’)
注:错误原因是print拼写错误。
错误示例2:
sayhello()
def sayhello():
pass
注:错误原因是在函数定义之前对函数进行调用。
解决方法:
正确书写变量名、函数名或类名等,在使用变量前先进行赋值,将函数的定义放在函数调用之前,等等。即保证某个名字(标识符)先存在,才能被使用。
4. TypeError类型错误
(1)整数和字符串不能进行连接操作。
报错信息:
TypeError: Can’t convert ‘int’ object tostr implicitly
TypeError: unsupported operand type(s) for : ‘float’ and ‘str’
错误示例1:
print('score:' 100)
錯誤範例2:
print(9.8 'seconds')
解決方法:
#在整數、浮點數或布林值與字串進行連接操作之前,先使用str()函數將其轉換為字串類型。
(2)呼叫函數時參數的數量不正確,或未傳遞參數。
錯誤訊息:
TypeError: input expected at most 1arguments, got 2
TypeError: say() missing 1 requiredpositional argument: 'words'
錯誤範例1:
input('輸入姓名', '年齡')
註:錯誤原因是試圖提供input()函數第二個參數。
錯誤範例2:
def say(words):
print(words)
say()
註:錯誤原因是呼叫函數時未傳遞參數。
解決方法:
記住函數用法,了解函數的參數定義,使用正確的方法呼叫函數即可。
5. KeyError鍵錯誤
#使用不存在的鍵名存取字典中的元素,就會發生這個錯誤。
錯誤訊息:
KeyError: 'c'
錯誤範例:
d= {'a':1, 'b':2}
print(d['c'])
解決方法:
在存取字典中的元素時,先用in關鍵字偵測要存取的鍵名是否存在,或使用字典的get()方法安全地存取字典元素。
6. IndexError索引錯誤
當存取清單的索引超出清單範圍時,就會出現索引錯誤。
錯誤訊息:
IndexError: list index out of range
錯誤範例:
a = [1, 2, 3]
print(a[3])
註:錯誤原因是列表a中不存在第4個索引。請記住,清單的索引從0開始編號。
解決方法:
透過len()函數取得清單的長度,然後判斷要存取的索引是否超出清單範圍。
7. UnboundLocalError未初始化本地變數錯誤
在函數中,如果對未宣告的全域變數進行修改操作,將會遇到這個錯誤。
錯誤訊息:
UnboundLocalError: local variable 's'referenced before assignment
錯誤範例:
s = 1
#def
#def
# test():
s = 1
print(s)
test()
#註:錯誤原因是在函數內對未宣告的全域變數s進行了自增操作。 Python將變數s視為一個本地的局部變量,但該變數未初始化。
解決方法:在函數內使用全域變數時,使用global關鍵字對其進行宣告即可。
總結#########總之,在實際程式設計中遇到錯誤是不可避免的。但是不用擔心,它們不過是紙老虎。初學者應善於利用搜尋引擎尋找解決問題,遇到什麼錯誤就可以查什麼。只要將錯誤訊息的內容輸入到搜尋引擎的搜尋框內,就能找到許多解決錯誤的資料。 ###以上是Python初學者常見的七種錯誤及解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!