Python运行的17个时新手常见错误小结


Posted in Python onAugust 07, 2012

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 i in 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备份Mysql脚本
Aug 11 Python
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
python读取指定字节长度的文本方法
Aug 27 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python 消费 kafka 数据教程
Dec 21 Python
python 爬取小说并下载的示例
Dec 07 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 Python
Python 代码性能优化技巧分享
Aug 07 #Python
Python正则表达式介绍
Aug 06 #Python
python 实现文件的递归拷贝实现代码
Aug 02 #Python
python实现划词翻译
Apr 23 #Python
Python程序语言快速上手教程
Jul 18 #Python
python 图片验证码代码分享
Jul 04 #Python
Python查询Mysql时返回字典结构的代码
Jun 18 #Python
You might like
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php数据库抽象层 PDO
2011/05/07 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
php实现可运算的验证码
2015/11/10 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
网站上面有这种切换效果
2006/06/26 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
python实现周期方波信号频谱图
2018/07/21 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
应届生财务管理求职信
2013/11/06 职场文书
英文版销售经理个人求职信
2013/11/20 职场文书
酒吧员工的岗位职责
2013/11/26 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
自查自纠工作总结
2014/10/15 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
python中的None与NULL用法说明
2021/05/25 Python
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers