python17个常见问题_Python 常见的17个错误分析
忘记在if,for,def,elif,else,class等声明末尾加 :
会导致 “ 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!')
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()
python17个常见问题_Python 常见的17个错误分析相关推荐
- Python 常见的17个错误分析
点击上方"小詹学Python",选择"置顶公众号" 精品文章,第一时间送达 来源:开源中国 链接:https://www.oschina.net/questio ...
- python17个常见问题_17个Python 常见错误的分析,你都遇到过哪些?
对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲.随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题.下面整理了常见的17个错误, ...
- 初学Python,我给你总结了常见的17个错误
点击"视学算法","置顶"公众号 重磅干货,第一时间送达 来源:开源中国 链接:https://www.oschina.net/question/89964_6 ...
- Python常见的17个错误
来源:开源中国 链接:https://www.oschina.net/question/89964_62779 1,忘记在 if,for,def,elif,else,class 等声明末尾加 : 会导 ...
- 官方问答--微信小程序常见FAQ (17.8.21-17.8.27)
给提问的开发者的建议: 提问之前先查询 文档.通过社区右上角搜索搜索已经存在的问题. 写一个简明扼要的标题,并且正文描述清楚你的问题. 提交 BUG:需要带上基础库版本号,设备信息(iOS, Andr ...
- 微信小程序常见FAQ (17.8.21-17.8.27)
Q:1.5版本基础库的小程序出现了image bindload事件响应两次的问题. A:你好,感谢反馈,我们会尽快进行修复,敬请关注. Q:地图里marker的callout在android机型上变成 ...
- python编辑elif显示错误_Python运行的17个时新手常见错误小结
1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 "SyntaxError :invalid syntax" ...
- python求圆柱体的体积_Python 常见优化技巧,让你的程序溜溜的跑起来!
点击上方 编程学习者社区,选择 创建星标 回复关键字资源获取编程资料 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优 ...
- python有几种_Python常见的几种算法
冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也 ...
最新文章
- int 小数_[LeetCode] 166. 分数到小数
- 数据挖掘肿瘤预测_科研套路不嫌多,数据挖掘发3分
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q40-Q44)
- PHP | 计算字符串中的单词总数
- mfc检测一个目录是否产生新文件_细数Java8中那些让人纵享丝滑的文件操作
- MobileNet论文笔记
- 用jquery动态添加form表单
- NAT负载均衡_ftp
- denied git permission_Git使用之Permission Denied问题解决[2153-Noblog]
- 计算机监控防误,计算机监控防误操作系统专利_专利申请于2007-10-25_专利查询 - 天眼查...
- python,执行pip报错:Fatal error in launcher: Unable to create process using ‘“D:\tools\python.exe“ (已解决)
- Linux redis ipv6,linux centOS 开启ipv6
- SysML实例——盖浇饭
- Proteus仿真p时出现Cannot open‘***\LISA5476.SDF’的错误
- 【BZOJ3503】【Cqoi2014】和谐矩阵 高斯消元,解异或方程组
- oracle 把结果加上百分号_用一条sql语句显示数据百分比并加百分号
- 新年哪些科技产品值得买?这里也许就有你想要的答案
- 熔断器Hystrix配置及使用
- 人到中年,越活越抠,越活越卑微
- 微信小程序android 校园班车乘车预约系统ssm+uniapp
热门文章
- 解决 pycharm can not save setting
- 总算知道怎样从ImageMagick生成的数据转换成HICON: MagickGetImageBlob LookupIconIdFromDirectoryEx...
- -webkit-filter是神马?
- 通过键盘方向键控制TreeView节点的移动
- 7. Android Basic UI的布局 WidgetDemo基本组件演示
- RTT的IPC机制篇——IPC通信总结
- php 企业微信指令回调借款_php处理微信支付回调改变订单支付状态的代码
- lvds单8转双8芯片_单片机定时芯片方案开发,2到8小时可调定时IC,低功耗触发延时芯片sop-8封装-丽晶微电子...
- C/C++排序算法(5)归并排序
- 并查集——关押罪犯(洛谷 P1525)