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 test():
s += 1
print(s)
test()
注:毛病原因是在函数内对未声明的全局变量s举行了自增操纵。Python将变量s视为一个当地的局部变量,但该变量未初始化。
处理要领:
在函数内运用全局变量时,运用global关键字对其举行声明即可。
总结
总之,在现实编程中碰到毛病是不可避免的。然则不必忧郁,它们不过是纸老虎。初学者应擅长应用搜刮引擎查找和处理问题,碰到什么毛病就查什么。只需将毛病信息的内容输入到搜刮引擎的搜刮框内,就可以找到许多处理毛病的材料。
以上就是Python初学者罕见的七种毛病及处理要领的细致内容,更多请关注ki4网别的相干文章!