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中用memcached来减少数据库查询次数的教程
Apr 07 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
浅谈python可视化包Bokeh
Feb 07 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
python实现按行切分文本文件的方法
2016/04/18 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
解决yum对python依赖版本问题
2019/07/05 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
应届生法律求职信
2013/10/22 职场文书
英语自荐信范文
2013/12/11 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
同居协议书范本
2014/04/23 职场文书
租房协议书范文
2014/08/20 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
趣味运动会口号
2015/12/24 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS