Python编程中一些常见的错误和处理方法
1.关于return的用法
return 是不能在方法以外使用的,如果用在了方法以外的话,就会出现下面这种错误。
count = 0
while True:
count +=1
if count ==10:
return
报错信息为:SyntaxError: 'return' outside function
解决办法:将return换成break。break是用来结束循环的。示例如下:
count = 0
while True:
count +=1
if count ==10:
break
print(count)
输出结果是:10.
2.类型错误
name = '小张'
age = 5
print('我的名字是' + name + ',我的年龄是' + age)
报错:TypeError: must be str, not int
这是类型错误,提示必须是一个字符串,不能是数字
解决方法:在使用“+”做拼接的时候,必须使用字符串,或者把数字转化成字符串。
示例如下:
name = '小张'
age = '5'
print('我的名字是' + name + ',我的年龄是' + age)
3.语法错误
if name == '小李'
print('Hello')
报错信息为: SyntaxError: invalid syntax
提示为:语法错误,非法的语法。
当报错的时候,要注意回到错误信息的那一行,然后从下往上,慢慢查找,此处这个程序就是因为If语法忘了在判断语句后面加“:”,所以导致的错误。
4.缩进错误
报错信息为:IndentationError: unindent does not match any outer indentation level
提示:缩进错误,未知缩进不匹配任何缩进等级
解决办法:使用“tab”键自动缩进
5.索引错误
list1 = [2,3,4,5,6]
print(list1[7])
报错信息:IndexError: list index out of range
提示:索引错误,列表索引超出了范围。
解决办法:回头看列表的长度,索引是要小于列表的长度的。上面的列表长度是5,而索引却要打印第七个,所以是超出了列表的长度。
6.值错误
content = 'hello world'
result = content.index('a')
print(result)
报错信息:ValueError: substring not found
提示:值错误,子字符串未找到
解决办法:重新查看字符串中的所有字符,看是否是自己索要打印的子字符不在字符串中。
7.属性错误
tp1 = ((),[],{},1,2,3,'a','b','c',3.14 ,True)
tp1.remove(1)
print(tp1)
报错信息:AttributeError: 'tuple' object has no attribute 'remove'
提示:属性错误:元组对象没有属性'remove'
8.类型错误
dic1 = {1,2,3,4,}
dic1.pop()
print(dic1)
报错信息:TypeError: pop() takes no arguments (1 given)
提示:pop方法希望得到至少一个参数,但是现在参数为0
解决方法:给pop方法添加一个参数。
9.连接数据库错误。
(1366, "Incorrect string value: '\\xF0\\x9F\\x99\\x8F\\x0A\\xE6...' for column 'text' at row 1")
连接方式改为:
'CHARSET':'utf8mb4_general_ci',
10.使用验证码过程中可能遇见的三个错误以及解决方法。
使用验证码遇到的问题 1.RuntimeError: Model class captcha.models.CaptchaStore doesn't declare anexplicit app_label and isn't in an application in INSTALLED_APPS. 在settings里注册 2.在项目里面urls进行设置 Make sure you\'ve included captcha.urls a s explained in the INSTALLATION section on http://readthedocs.org/docs/django-simple-captcha/en/latest/usage.html#installation' 3.no such table 重新模型迁移