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

1
发布时间:『 2017-11-04 11:20 』     帖子类别:『人工智能』  阅读次数:8803
(本文『Python运行的17个时新手常见错误小结』的责任编辑:老王)
摘要:初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误

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运行的17个时新手常见错误小结相关推荐

  1. python编辑elif显示错误_Python运行的17个时新手常见错误小结

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

  2. python中冒号报错_python新手常见错误和异常

    在python编程中,新手最常见的错入和异常如下 1.缺少冒号引起的错误 在if,elif,for,while,class,def声明末尾需要添加冒号(:),如果忘记添加,将会提示:"Syn ...

  3. python写错了怎么撤回_python新手常见错误汇总

    对于新手,初学Python时,总会遇到这样那样的报错,想要弄懂Python错误信息的含义可能还不知道怎么做,这里列出了一些比较常见的Python报错问题,希望对于学习Python的人能够有些帮助. 1 ...

  4. vjudge新手常见错误(误)和好习惯18.2.23

    **新手常见错误总结(误) **五道签到题而已..  快把我写死了 **zj三分钟写完的题我可以WA一天(逃(跑丢了 ** 啊 总结比再去吭哧三十分钟重要啊 一. 联系的方法论, 正向讨论 二. [常 ...

  5. 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

    如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...

  6. 服务器php 不能运行框架,经验总结 PHP框架常见错误

    我们可以利用各种PHP框架来为我们的编程带来方便,节约程序员大量的时间.那么在实际使用PHP框架中偶尔会出现一些错误,我们为此总结了PHP框架常见错误. 任何类型的编程中都可能有错误,但是PHP框架有 ...

  7. 运行windows live writer时发生“意外错误”

    安装完成后按照介绍的配置方法,提示 "尝试检测日志设置时发生意外错误 QI for IEnumVARIANT failed on the unmanaged server",goo ...

  8. Python新手常见错误汇总|附代码检查清单

    写代码,出错在所难免,关键是如何快速定位错误,解决bug.错误提示,有时候并不能提供有效信息,尤其是编程新手,常常会犯一些低级错误,比如缩进不对,引号缺失,括号不全等,下面是新手常犯的一些代码错误,希 ...

  9. 通达信公式转python为什么很难_[转]N年Python老司机,血泪总结新手常见10大错误...

    1.默认可变对象 上图中,我们定义了addElement函数,在函数的形参中,我们默认使用了可变对象list.当我们连续的使用默认参数调用addElement函数时,可以发现list1只被创建了一次. ...

最新文章

  1. iOS 数据计算带小数点导致数据不精确问题
  2. redis session java获取attribute_redis里的数据结构
  3. lstm网络_LSTM(长短期记忆网络)
  4. odoo10参考系列--ORM API 一(记录集、环境、通用方法和创建模型)
  5. 编译opencv3.1.0时报错unable to find a javc compiler
  6. 加工奶制品的生产计划
  7. 大学一年级(行走的皮卡丘)
  8. photoshop多选文字_60多个Photoshop文字效果教程
  9. arp协议分析python编程实现arp欺骗抓图片
  10. 《持续集成实践指南》第1章 DevOps实践简介
  11. 刘强东的“毛乌素”之斗
  12. 如何在Windows上为代码签名创建自签名证书
  13. C++ pair 和make_pair
  14. DCOS之k8s的secret
  15. 高通骁龙855性能首测:继续领先安卓阵营,但离苹果仍有差距...
  16. fabric sdk java教程,Fabric Java SDK最新教程
  17. 铜陵三中2021高考成绩查询,铜陵2021高考最高分多少分,铜陵历年高考状元资料
  18. 全排列问题(可重复排列和不可重复排列)
  19. STM8L101活跃停机(AWU)编程教学
  20. 用Maude对人鬼过河游戏建模

热门文章

  1. AI大潮来袭,Python将纳入高考?!你怎么看
  2. 阿里巴巴为什么不建议直接使用 Async 注解?
  3. Netflix创始人:我不要求996,一样市值1万亿
  4. 深入Hotspot源码,搞清楚JVM的本质
  5. Java开发最常犯的10个错误,打死都不要犯!
  6. Datawhale实验室
  7. 512张GPU炼出10万亿参数巨模型!5个月后达摩院模型再升级,今年双十一已经用上了...
  8. ICCV 2021 | 国科大提出首个CNN和Transformer双体主干网络!Conformer准确率高达84.1%!...
  9. 【每日一算法】二叉树的最小深度
  10. servlet里面的context,定义属性值的事情!