bug的由来及分类
世界上第一部万用计算机的进化版-马可2号(Mark II)
bug的由来及分类
1、粗心导致的语法错误
(1)漏了末尾的冒号,如if语句,循环语句,else子句等
(2)缩进错误,该缩进的没缩进,不该缩进的瞎缩进
(3)把英文符号写成中文符号,比如说:引号,冒号,括号
(4)字符串拼接的时候,把字符串和数字拼在一起
(5)没有定义变量,比如说while的循环条件的变量
(6)“==”比较运算符和“=”赋值运算符的混用
2、知识不熟练导致的错误
(1)索引越界问题
#坚持好好学习
lst = [1,2,3,4]
print(lst(4))
'''
报错,索引从0开始
'''
(2)append()方法的使用不熟练
lst = []
lst = append('a','b','c')
print(lst)
#正确
lst = []
lst.append('a')
lst.append('b')
lst.append('c')
print(lst)
3、思路不清导致的问题解决方法
(1)使用print()函数
(2)使用#暂时注释部分代码
4、被动掉坑:程序代码逻辑没有错,知识因为用户错误操作或者一些“例外情况”而导致的程序崩溃
python的异常处理机制
1、多个except结构,捕获异常的顺序按照先子类后父类的顺序,为了避免遗漏可能出现的异常,可以在最后哦增加BaseException
#坚持好好学习
try:
a=int(input('请输入第一个数字'))
b=int(input('请输入第二个数字'))
result=a/b
print('a/b结果是',result)
except ZeroDivisionError:
print('对不起,除数不能为0')
except ValueError:
print('只能输入字符串')
print('程序结束')
2、try…except…else结构
如果try快中没有抛出异常,则执行else快,如果try中抛出异常,except块
#坚持好好学习
try:
a=int(input('请输入第一个数字'))
b=int(input('请输入第二个数字'))
result=a/b
except BaseException as e:#不错出现什么错误,都会执行下面的输出
print('出错了',e)
else:
print('计算结果是',result)
3、tye…except…else…finally结构
finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源
#坚持好好学习
try:
a=int(input('请输入第一个数字'))
b=int(input('请输入第二个数字'))
result=a/b
#出错执行
except BaseException as e:#不错出现什么错误,都会执行下面的输出
print('出错了',e)
#不出错执行
else:
print('计算结果是',result)
#无论代码是否出错,都会运行这一行
finally:
print('谢谢你的使用')
4、traceback模块
使用traceback模块打印异常处理信息
#坚持好好学习
import traceback
try:
print('----------')
print(1/0)
except:
traceback.print_exc()
python常见的异常类型
#坚持好好学习
#(1)数学运算的异常
#print(1/0)#ZeroDivisionError: division by zero
#(2)索引
#lst = [1,2,3,4]
#print(lst[4])#IndexError: list index out of range
#(3)
#dic={'name':'刘明','age':17}
#print(dic['hijii'])#KeyError: 'hijii'
#(4)
#print(lisa)#NameError: name 'lisa' is not defined
#(5)语法错误
#int a=10 #SyntaxError: invalid syntax
#(6)
#a=int('hello')#ValueError: invalid literal for int() with base 10: 'hello'