首页 > 编程语言 >Python__20-- 常见Bug

Python__20-- 常见Bug

时间:2023-01-01 23:00:59浏览次数:63  
标签:__ 20 Python 程序 except 整数 try print 输入

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/b

except 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/b

except BaseException:
print('出错了')

else:
print('结果为:',result)

finally:
print('无论是否产生异常,总会被执行的代码')

print('程序结束')

测试结果:

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

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

3.4 总结

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

4 常见异常

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

5 traceback模块

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

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

测试代码:

import traceback
try:
print('-----------')
print(1/0)
except:
traceback.print_exc()

测试结果:

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


标签:__,20,Python,程序,except,整数,try,print,输入
From: https://blog.51cto.com/husheng/5983400

相关文章

  • 230101_50_RPC底层原理
    1.RPC代码参考学习:https://www.bilibili.com/video/BV17Z4y1s7cG?p=1&vd_source=e4f205f9f8b63c316aab97e0421a77a91.1RPC,remoteprocedurecall,远程过程调用,它本身是一......
  • wuti
    ......
  • C语言:打印乘法口诀表。
    #include<stdio.h>intmain(){inti=0;for(i=1;i<=9;i++){intj=1;for(j=1;j<=i;j++){printf("%d*%d=%-2d",i,j,i*j); } printf("\n"......
  • RBAC
    28.RBAC28.1KubernetesAPI鉴权流程身份验证kubernetesAPI-Server验证客户端身份是不是合法的serviceaccount账户,如果不是则API服务器直接返回错误状态码401并......
  • Linux服务器中的时间同步问题
    很多人在进行时间的同步时,仅仅只是用ntpdate修改时间,但这并不是真正的修改了服务器的时间,只是修改了当前date看到的时间,也就是系统时间。在Linux服务器中,掌管时间的一共有......
  • 一款真正的Mac 清理神器CleanMyMac X4.15免费下载
    一款真正的Mac清理神器CleanMyMacX最友好的Mac问题修复工具。删除系统垃圾、不想要的应用和恶意软件,让您的Mac恢复最快运行速度。如果您的Mac出现了运行缓慢的问题,......
  • D - Scope --- ATCODER
    D-Scopehttps://atcoder.jp/contests/abc283/tasks/abc283_d 思路使用stack做字符串的内容分析,除了)所有的字符依次入栈,遇到(字符,则从栈顶开始依次出栈,直到第一个(也......
  • [C/C++] C++之Lambda表达式
    Lambda表达式也叫匿名函数,有时候也叫闭包(Closure)参考视频:注意视频中捕获变量部分有错误,按本博客为准1.定义[OuterVar](intx,inty)->int{returnOuterVar+......
  • .NET周报【12月第4期 2022-12-31】
    祝大家新年快乐!国内文章『再看.NET7』数值类型https://mp.weixin.qq.com/s/ctiBMPY6Hditk81AzHSRng在C#中,有int16,用short来定义;有int32,用int定义;用int64,用long来定义......
  • Day01
    day01day01day01day01Hello,WorldHello,WorldHello,WorldHello,WorldHello,WorldHello,World---hello###hello######hello#########   标题跳转到学......