•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

Python初学者罕见的七种毛病及解决方法【Python教程】,python

摘要: 在进修Python言语编程的最初几周内,初学者会碰到大批的语法毛病及其他毛病。然则只需对峙克服困难,经由一段时间的编程练习,这些毛病就会明显削减。下面列出了罕见的一些毛病及其处理要领,供初学者备查。...
在进修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 test():

s += 1

print(s)

test()

注:毛病原因是在函数内对未声明的全局变量s举行了自增操纵。Python将变量s视为一个当地的局部变量,但该变量未初始化。

处理要领:

在函数内运用全局变量时,运用global关键字对其举行声明即可。

总结

总之,在现实编程中碰到毛病是不可避免的。然则不必忧郁,它们不过是纸老虎。初学者应擅长应用搜刮引擎查找和处理问题,碰到什么毛病就查什么。只需将毛病信息的内容输入到搜刮引擎的搜刮框内,就可以找到许多处理毛病的材料。

以上就是Python初学者罕见的七种毛病及处理要领的细致内容,更多请关注ki4网别的相干文章!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号