Python__20-- 常见Bug

2023-01-02 21:12:03 来源:51CTO博客

1 Bug

一杯茶,一包烟,一个Bug改一天


(资料图)

程序错误,即英文的Bug,也称为缺陷、臭虫,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。 早期的计算机由于体积非常庞大,有些小虫子可能会钻入机器内部,造成计算机工作失灵。史上的第一只 "Bug" ,真的是因为一只飞蛾意外走入一电脑而引致故障,因此Bug从原意为臭虫引申为程序错误。 一些有趣的Bug有时也会成为一种乐趣。在电脑游戏中,一些Bug,假如不令游戏出现大错误的话,经常会变成一种玩游戏时的秘技。

2 语法错误

粗心、粗心、还是粗心如:注意input("哈哈年龄")获取的都是字符串类型

3 异常处理

异常:

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

处理:

捕捉异常可以使用try/except语句。 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。 如果你不想在异常发生时结束你的程序,只需在try里捕获它。

3.1 try……except 某错误

测试代码:

try:    a=int(input("请输入第一个整数"))    b=int(input("请输入第二个整数"))    result=a/b    print("结果为:",result)except  ZeroDivisionError:    print("对不起,除数不允许为0")except  ValueError:    print("对不起,只能输入数字串")print("程序结束")

测试结果1:

请输入第一个整数python 对不起,只能输入数字串 程序结束

进程已结束,退出代码为 0

测试结果2:

请输入第一个整数10 请输入第二个整数25 结果为: 0.4 程序结束

进程已结束,退出代码为 0

测试结果3:

请输入第一个整数10 请输入第二个整数0 对不起,除数不允许为0 程序结束

进程已结束,退出代码为 0

3.2 try……except……else

测试代码:

try:    a=int(input("请输入第一个整数"))    b=int(input("请输入第二个整数"))    result=a/bexcept  BaseException:    print("出错了")else:    print("结果为:",result)print("程序结束")

测试结果1:

请输入第一个整数1 请输入第二个整数0 出错了 程序结束

进程已结束,退出代码为 0

测试结果2:

请输入第一个整数a 出错了 程序结束

进程已结束,退出代码为 0

测试结果3:

请输入第一个整数1 请输入第二个整数2 结果为: 0.5 程序结束

进程已结束,退出代码为 0

3.3 try……except……else……finally

测试代码:

try:    a=int(input("请输入第一个整数"))    b=int(input("请输入第二个整数"))    result=a/bexcept  BaseException:    print("出错了")else:    print("结果为:",result)finally:    print("无论是否产生异常,总会被执行的代码")print("程序结束")

测试结果:

请输入第一个整数25 请输入第二个整数0 出错了 无论是否产生异常,总会被执行的代码 程序结束

进程已结束,退出代码为 0

3.4 总结

try: <语句> #运行别的代码 except <名字name>: <语句> #如果在try部份引发了"name"异常 else: <语句> #如果没有异常发生 finally: <语句> #无论是否产生异常,总会被执行的代码

4 常见异常

ZeroDivisionError 不能除0IndexError 数据中没有此索引KeyError 映射中没有这个键NameError 没有声明SyntaError 语法错误ValueError 传入无效的参数

5 traceback模块

该模块提供了一个标准接口,用于提取,格式和打印Python程序的堆栈痕迹。 它完全模仿了Python解释器在打印堆栈跟踪时的行为。 当您想在程序控制下打印堆栈迹线时,这非常有用,例如在解释器周围的“包装器”中。

在日常开发中,我们会做一些基本的异常处理,但是有时候只能打印我们处理的结果或者将异常打印出来,不能直观的知道在哪个文件中的哪一行出错。traceback模块就是为了解决这个问题出现的。

测试代码:

import tracebacktry:    print("-----------")    print(1/0)except:    traceback.print_exc()

测试结果:

Traceback (most recent call last): File "E:\pythonProject\Python_YSJ\chap11\​​test.py​​​", line 7, in print(1/0) ZeroDivisionError: division by zero进程已结束,退出代码为 0

标签: 测试结果 异常处理 异常发生

上一篇:OSI 二层技术之STP生成树协议
下一篇:快资讯丨44-KVM虚拟化-存储管理和磁盘扩容