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块中申请的资源

python 中缺测为什么删不掉 python 缺陷_python

#坚持好好学习
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常见的异常类型

python 中缺测为什么删不掉 python 缺陷_python_02

#坚持好好学习
#(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'