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安装第三方库的3种方法
Jun 21 Python
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
浅谈Python中eval的强大与危害
Mar 13 Python
python已协程方式处理任务实现过程
Dec 27 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
python实现批量转换图片为黑白
Jun 16 Python
PyQt5的相对布局管理的实现
Aug 07 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 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对字符串的递增运算分析
2010/08/08 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
Zabbix实现微信报警功能
2016/10/09 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python实现顺时针打印矩阵
2019/03/02 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
Django URL参数Template反向解析
2020/11/24 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
毕业证丢失证明
2014/01/15 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
同事打架检讨书
2014/02/04 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
婚纱店策划方案
2014/05/22 职场文书
研究生导师推荐信
2014/09/06 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL