Python异常之常见的Bug类型解决方法
一、粗心导致的语法错误SyntaxError
1、input输入报错
age=input('请输入你的年龄:') if age>=18: print("成年人做事需要。。。。")
报错:TypeError: '>=' not supported between instances of 'str' and 'int'
因为input输入返回值是字符串所以无法与整数类型数字比较
解决办法: 在input
前面加上int()
,把input输入的数转为整数类型,就可以比较数据了
age=int(input('请输入你的年龄:')) if age>=18: print("成年人做事需要。。。。")
2、循环语句报错
while i<10: print (i)
循环语句报错:错误原因,没有循环变量初始值,也没有循环变量的递增,然后使用括号不规范,使用的中文的括号
解决方法: 添加虚幻变量的初始值,添加循环变量的递增,将不规范的括号改正(使用中文括号)
循环要有三要素:
i=1 #循环变量的起始值 while i < 10: #循环的条件语句 print(i) i+=1 #变量的递增
3、赋值报错
for i in range(3): uname =input("请输入用户名:") upwd=input("请输入密码:") if uname="admin" and upwd=pwd: print("登陆成功!") else print("输入有误") else print("对不起,三次均输入错误")
报错:SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
错误多处:=是赋值,==才是比较,if语句比较时使用了=赋值语句,所以出错,还有就是未定义比较的内容admin然后就是else语句后面未加:
解决方法: 在if语句比较处将=换成==,因为=是赋值,==是比较,还有就是在循环开始前加上用来比较的变量,然后再else语句后加上冒号:
admin="hua" pwd="123456" for i in range(3): uname =input("请输入用户名:") upwd=input("请输入密码:") if uname==admin and upwd==pwd: print("登陆成功!") else: print("输入有误") else: print("对不起,三次均输入错误")
粗心导致错误的自查宝典:
- 1、漏了末尾的冒号,如if语句,循环语句,else子句等。
- 2、缩进错误,该缩进的没缩进,不该缩进的却缩进了。
- 3、把英文符号写成中文符号没比如说:引号,冒号,括号
- 4、字符串拼接的时候,把字符串和数字拼接在一起
- 5、没有定义变量,比如说while的循环条件变量
- 6、"=="比较运算符和"="赋值运算符的混用
二、知识不熟练导致的错误Bug
1、索引越界问题 IndexError
lst=[11,22,33,44] print(lst[4])
错误:IndexError: list index out of range 索引越界,虽然有四个数,但索引不是从一开始算,正索引是从0开始算,负索引是从-1开始算
解决办法: 改写为正确的索引
lst=[11,22,33,44] print(lst[3])
2、append()函数的使用报错
lst=[] lst=append("A","B","C") print((lst))
报错:NameError: name 'append' is not defined 错误的方法使用append()函数
解决方法:掌握正确的使用函数的技巧,使用函数不是使用=调用,而是使用.去调用函数,并且append()
函数一次只能增加一个元素
lst=[] lst.append("A") lst.append("B") lst.append("C") print((lst)) #返回值['A', 'B', 'C']
知识点掌握不熟练的导致的错误,唯一的解决方法就是练练练
三、思路不清晰导致的问题解决方案
1、使用print()函数
将出错的代码用print输出,将有问题的代码注释掉,一步一步的调试,最后将想要的结果输出
2、使用"#"暂时注销部分代码
解决方法:多加练习,掌握基础知识
四、被动掉坑
程序代码逻辑没有错,知识因为用户错误操作或者一些"例外情况"而导致的程序崩溃
被动掉坑问题的解决方案:
python提供了异常处理机制,可以在异常出现时即使补货,然后内部消化,让程序继续运行
异常捕获处理 try: except xxx:语句 xxx为错误类型
try
:用于放入容易出错的代码
except用于处理异常并正常输出后续代码,可以使代码不会报错结束,可以出现多个except语句来处理多种异常类型。
使用方式:
try:
将容易出错的代码放入其中
易出错代码
易出错代码
except 可能出现的类型:
print(捕获异常后用于提示的话语)
except 可能出现的类型:
print(捕获异常后用于提示的话语)
一般代码:
a=int(input("请输入第一个整数:")) b=int(input("请输入第二个整数:")) result=a/b print("结果为:",result)
极容易出现报错,导致终止后面的程序,比如整除不能输入0,不能输入英文,只要输入了,那么就会报错结束程序
所以就需要使用到try: except
try: #将易错代码放进去 a=int(input("请输入第一个整数:")) b=int(input("请输入第二个整数:")) result=a/b print("结果为:",result) except ZeroDivisionError: #不允许被0除的异常(异常类型在程序报错时会出现,将这种异常类型放入后,出现该异常就会自动处理,而不会报错终止程序) print("对不起,除数不允许为0") #出现该异常后的提示 except ValueError: #输入异常,int括号里的input只能输入数字串,不能输入字符串 print("只能输入数字串") #出现该异常后的提示 print("程序结束") #程序可能出现的异常都用except写出来了,所以不管出现什么异常,后面的程序一样运行
到此这篇关于Python异常之常见的Bug类型解决方法的文章就介绍到这了,更多相关Python异常解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python中浅拷贝copy与深拷贝deepcopy的简单理解
今天小编就为大家分享一篇关于Python中浅拷贝copy与深拷贝deepcopy的简单理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-10-10python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
今天小编就为大家分享一篇python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-12-12
最新评论