Python——Bug
文章目录
1. Bug的由来及分类
1.1 Bug的常见类型
1.1.1 粗心导致的语法错误SyntaxError
# coding=gbk
age=input('请输入你的年龄')
print(type(age))
if age>=18:
print('成年人...')
TypeError: ‘>=’ not supported between instances of ‘str’ and ‘int’
改:
# coding=gbk
age=input('请输入你的年龄')
print(type(age))
if int(age)>=18:
print('成年人...')
粗心导致错误的自查宝典:
(1)漏了末尾的冒号,如if语句,循环语句,else子句等
(2)缩进错误,该缩进的没缩进,不该缩进的瞎缩进
(3)把英文符号写成中文符号,比如说:引号,冒号,括号
(4)字符串拼接的时候,把字符串和数字拼在一起
(5)没有定义变量,比如说while的循环条件的变量
(6)“==”比较运算符和“=”赋值运算符的混用
1.1.2 知识不熟练导致的错误
# coding=gbk
lst=[11,22,33,44]
print(lst[4])
IndexError: list index out of range
1.1.3 思路不清导致的问题
解决方案:
(1)使用print()函数
(2)使用“#”暂时注释部分代码
2. 不同异常类型的处理方式
程序代码逻辑没有错,只是因为用户错误操作或者一些“例外情况”而导致的程序崩溃
解决方案:
2.1 try…except…except结构
(1)Python提供了异常处理机制,可以在异常出现时即时捕获,然后内部“消化”,让程序继续运行
(2)多个except结构:捕获异常的顺序按照先子类后父类的顺序,为了避免遗漏可能出现的异常,可以在最后增加BaseException
# coding=gbk
try:
a=int(input('请输入第一个整数'))
b=int(input('请输入第二个整数'))
result=a/b
print('结果为:',result)
except ZeroDivisionError:
print('对不起,除数不允许为0')
except ValueError:
print('只能输入数字串')
print('程序结束')
2.2 try…except…else结构
如果try快中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块
# coding=gbk
try:
a=int(input('请输入第一个整数'))
b=int(input('请输入第二个整数'))
result=a/b
except BaseException as e:
print('出错了',e)
else:
print('计算结果为:',result)
2.3 try…except…else…finally结构
finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源
# coding=gbk
try:
a=int(input('请输入第一个整数'))
b=int(input('请输入第二个整数'))
result=a/b
except BaseException as e:
print('出错了',e)
else:
print('计算结果为:',result)
finally:
print('谢谢您的使用')
2.4 Python中常见的异常类型总结
序号 | 异常类型 | 描述 |
---|---|---|
1 | ZeroDivisionError | 除(或取模)零(所有数据类型) |
2 | IndexError | 序列中没有此索引(index) |
3 | KeyError | 映射中没有这个键 |
4 | NameError | 未声明/初始化对象(没有属性) |
5 | SyntaxError | Python语法错误 |
6 | ValueError | 传入无效的参数 |
# coding=gbk
#(1)数学运算异常
# print(10/0) #ZeroDivisionError
lst=[11,22,33,44]
#print(lst[4]) #IndexError 索引从0开始
dic={'name':'张三','age':20}
#print(dic['gender']) #KeyError
#print(num) #NameError
#int a=20 #SyntaxError
#a=int('hello') #ValueError
3. Python的异常处理机制
traceback模块:使用traceback模块打印异常信息
# coding=gbk
#print(10/0)
import traceback
try:
print('1.-------------')
print(1/0)
except:
traceback.print_exc()
4. PyCharm开发环境的调试模式
4.1 断电
程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步判断。
4.2 进入调试视图
进入调试视图的三种方式:
(1)单击工具栏上的按钮
(2)右键单击编辑区:点击:debug‘模块名’
(3)快捷键:shift+F9
程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步判断。
4.2 进入调试视图
进入调试视图的三种方式:
(1)单击工具栏上的按钮
(2)右键单击编辑区:点击:debug‘模块名’
(3)快捷键:shift+F9