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


Posted in Python onJuly 30, 2014

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

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

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

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”)

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

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”)

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

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

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)

而你实际想要这样做:

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

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

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

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

而你实际想要这样做:

numEggs= 12
print('I have ' + str(numEggs)+ ' eggs.')
 
或者:
 
numEggs= 12
print('I have %s eggs.' % (numEggs))

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”)

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

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

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

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

spam= 'THIS IS IN LOWERCASE.'
spam= spam.lowerr()

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

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

spam= ['cat','dog','mouse']
print(spam[6])

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”)

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

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需要指定一个有效的初始值。

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

spam= 0
spam+= 42
eggs+= 42

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

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

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

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

someVar= 42
def myFunction():
  print(someVar)
  someVar= 100
myFunction()

15)尝试使用 range()创建整数列表(导致“TypeError: 'range' object does not support item assignment”)

有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。然而,你需要记住 range() 返回的是 “range object”,而不是实际的 list 值。

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

spam= range(10)
spam[4]= -1

也许这才是你想做:

spam= list(range(10))
spam[4]= -1

(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)

16)不错在 ++ 或者 -- 自增自减操作符。(导致“SyntaxError: invalid syntax”)

如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。

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

spam= 1
spam++

也许这才是你想做的:

spam= 1
spam+= 1

17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod() takes no arguments (1 given)”)

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

class Foo():
  def myMethod():
    print('Hello!')
a= Foo()
a.myMethod()
Python 相关文章推荐
python中的多线程实例教程
Aug 27 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
python和c语言的主要区别总结
Jul 07 Python
pytorch实现线性拟合方式
Jan 15 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Python实现CAN报文转换工具教程
May 05 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 #Python
Python代码的打包与发布详解
Jul 30 #Python
Python中lambda的用法及其与def的区别解析
Jul 28 #Python
python代码制作configure文件示例
Jul 28 #Python
python编写网页爬虫脚本并实现APScheduler调度
Jul 28 #Python
python调用新浪微博API项目实践
Jul 28 #Python
python中的sort方法使用详解
Jul 25 #Python
You might like
几种显示数据的方法的比较
2006/10/09 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php实现RSA加密类实例
2015/03/26 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
jQuery的三种$()
2009/12/30 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
python实现视频分帧效果
2019/05/31 Python
python对XML文件的操作实现代码
2020/03/27 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
保密承诺书
2014/03/27 职场文书
公司委托书格式
2014/08/01 职场文书
重点工程汇报材料
2014/08/27 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
公司行政管理制度范本
2015/08/05 职场文书
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL