python新手经常遇到的17个错误分析

1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加
:(导致 SyntaxError :invalid syntax )

1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加
:(导致 “SyntaxError :invalid syntax”)

该错误将发生在类似如下代码中:

该错误将发生在类似如下代码中:

if spam == 42 print('Hello!')
if spam== 42 print('Hello!')

 

2) 使用 = 而不是 ==(导致 SyntaxError: invalid syntax )


= 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中:

2)使用 = 而不是 ==(导致“SyntaxError:
invalid syntax”) 

if spam= 42: print('Hello!')

= 是赋值操作符,而 == 是等于比较操作。该错误发生在如下代码中:

3)错误的使用缩进量。(导致 IndentationError:unexpected indent 、
IndentationError:unindent does not match any outer indetation level
以及 IndentationError:expected an indented block )

if spam = 42: print('Hello!')

记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:

 

print('Hello!') print('Howdy!')或者:if spam== 42: print('Hello!') print('Howdy!')或者:if spam== 42:print('Hello!')

4)在 for 循环语句中忘记调用 len() (导致 TypeError: 'list' object cannot
be interpreted as an integer )

3)错误的使用缩进量。(导致“IndentationError:unexpected
indent”、“IndentationError:unindent does not match any outer indetation
level”以及“IndentationError:expected an indented block”) 

通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range()
函数。要记得返回len 值而不是返回这个列表。

记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:

该错误发生在如下代码中:

print('Hello!') print('Howdy!') 或者: if spam == 42: print('Hello!') print('Howdy!') 或者: if spam == 42: print('Hello!')
spam= ['cat','dog','mouse']for iin range(spam): print(spam[i])

 

5)尝试修改string的值(导致 TypeError: 'str' object does not support
item assignment )
string是一种不可变的数据类型,该错误发生在如下代码中:


spam= 'I have a pet cat.'spam[13]= 'r'print(spam)

 

而你实际想要这样做:

4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object
cannot be interpreted as an integer”)

通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range()
函数。要记得返回len 值而不是返回这个列表。
该错误发生在如下代码中:

spam= 'I have a pet cat.'spam= spam[:13]+ 'r' + spam[14:]print(spam)
spam = ['cat', 'dog', 'mouse'] for i in range(spam): print(spam[i])

6)尝试连接非字符串值与字符串(导致 TypeError: Can't convert 'int'
object to str implicitly )

 

该错误发生在如下代码中:


numEggs= 12print('I have ' + numEggs+ ' eggs.')

 

而你实际想要这样做:

5)尝试修改string的值(导致“TypeError: 'str' object does not support
item assignment”)

string是一种不可变的数据类型,该错误发生在如下代码中:

numEggs= 12print('I have ' + str(numEggs)+ ' eggs.')或者:numEggs= 12print('I have %s eggs.' % (numEggs))
spam = 'I have a pet cat.' spam[13] = 'r' print(spam)

7)在字符串首尾忘记加引号(导致 SyntaxError: EOL while scanning string
literal )
该错误发生在如下代码中:

 

print(Hello!')或者:print('Hello!)或者:myName= 'Al'print('My name is ' + myName+ . How are you?')

而你实际想要这样做:
代码如下:

8)变量或者函数名拼写错误(导致 NameError: name 'fooba' is not defined

spam = 'I have a pet cat.' spam = spam[:13] + 'r' + spam[14:] print(spam)

该错误发生在如下代码中:

 

foobar= 'Al'print('My name is ' + fooba)或者:spam= ruond(4.2)或者:spam= Round(4.2)

9)方法名拼写错误(导致 AttributeError: 'str' object has no attribute
'lowerr' )

 

该错误发生在如下代码中:

6)尝试连接非字符串值与字符串(导致 “TypeError: Can't convert 'int'
object to str implicitly”)

该错误发生在如下代码中:

spam= 'THIS IS IN LOWERCASE.'spam= spam.lowerr()
numEggs = 12 print('I have ' + numEggs + ' eggs.')

10)引用超过list最大索引(导致 IndexError: list index out of range )

 

该错误发生在如下代码中:

而你实际想要这样做:
代码如下:

spam= ['cat','dog','mouse']print(spam[6])
numEggs = 12 print('I have ' + str(numEggs) + ' eggs.') 或者: numEggs = 12 print('I have %s eggs.' % (numEggs))

11)使用不存在的字典键值(导致 KeyError:‘spam' )

 

该错误发生在如下代码中:


spam= {'cat':'Zophie','dog':'Basil','mouse':'Whiskers'}print('The name of my pet zebra is ' + spam['zebra'])

 

12)尝试使用Python关键字作为变量名(导致 SyntaxError:invalid syntax )

7)在字符串首尾忘记加引号(导致“SyntaxError: EOL while scanning string
literal”)

该错误发生在如下代码中:

Python关键不能用作变量名,该错误发生在如下代码中:

print(Hello!') 或者: print('Hello!) 或者: myName = 'Al' print('My name is ' + myName + . How are you?')

class = 'algebra'
Python3的关键字有:and, as, assert, break, class, continue, def, del,
elif, else, except, False, finally, for, from, global, if, import, in,
is, lambda, None, nonlocal, not, or, pass, raise, return, True, try,
while, with, yield

 

13)在一个定义新变量中使用增值操作符(导致 NameError: name 'foobar' is
not defined )


不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam
+= 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。

 

该错误发生在如下代码中:

8)变量或者函数名拼写错误(导致“NameError:
name 'fooba' is not defined”) 

spam= 0spam+= 42eggs+= 42

该错误发生在如下代码中:

14)在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)(导致
UnboundLocalError: local variable 'foobar' referenced before assignment

foobar = 'Al' print('My name is ' + fooba) 或者: spam = ruond(4.2) 或者: spam = Round(4.2)

在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。

 

这意味着你不能在定义它之前把它当全局变量在函数中使用。


该错误发生在如下代码中:

9)方法名拼写错误(导致
“AttributeError: 'str' object has no attribute 'lowerr'”) 

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。