【Python】第四篇:Bug——程序员的一生之敌,先别急着写Bug,快来学学怎么在Python中调教它

💖花会沿路盛开,以后的路会布满鲜花!💖

系列文章目录🍁

第一篇:基础语法与结构 整理万字,秃头的路上,我们一起成为卷王
第二篇 :Python四大内置数据结构列表、字典、元组、集合看这一篇完全够用
第三篇:字符串与函数,越学越上头的python,你确定不来看看?



🌴前言

大家好,我是小沐!😃编程路上一个人可能走的更快,但一群人才能走得更远,关注小沐一起学习不迷路!今天分享的是有关于python中Bug调试的问题 ,话不多说,秃头走起——>冲冲冲👊👊👊!!!


🌿一、Bug

对于Bug,相信大家都不陌生了吧,有没有人跟你说过你写代码在写Bug呢,如果有人这么说,建议直接干他!哈哈哈。

1.Bug的由来

这是个很有意思的故事,计算机程序之母格雷斯在1947年用世界上第一部万用计算器的进化版——Mark Ⅱ调试程序的的时候,程序总是出现错误,于是他层层排查,苦恼了很久之后,拆开继电器发现里面有一只飞蛾卡在了机器里面,把飞蛾拿出来后,格雷斯竟然…
他将这只飞蛾的尸体粘在了他的工作日记上,并称它为Bug(臭虫)。从此,程序员就与Bug有了不解之缘。毫不夸张的说,Bug是每一个程序员的一生之敌!
我们通常把排除程序中的Bug称为DeBug,俗话说得好,coding五分钟,DeBug两小时,说的是你吗?如果不是的话,那我猜你一定在写Bug的路上…

2.Bug的分类

粗心导致的语法错误SyntaxError

#例1
a=input('请输入你的年龄:')
if a>18:
    print('你是一个成年人了!')
#例2
while i>11:
    print(i)

你能发现这两个例子哪里错了吗?评论区交流起来。语法错误一般系统会给出来错误之处,这方面小伙伴们有哪里的语法不清楚的话,可以查看小沐总结整理的Python学习内容,很全的啦!

知识不熟练导致的错误
如索引越界的问题,方法或函数使用的不对等等。

#例3
lst=[10,20,30,40]
print(lst[4])
#例4
lst=[]
lst=append('A'12,'B','C')
print(lst)

这里例4中append方法是lst的,用. 而且一次只能添加一个元素。知识点不熟练,那就一个字——

思路不清晰导致的问题
这里主要是指我们解决问题的方法有问题。这个可以平时养成写注释的习惯,很有帮助的!
被动掉坑
诸如手抖不小心按了键盘的某个键,0作除数等,面对这种问题我们往往会很懵逼,不知所措。索性,Python提供了异常处理机制,可以在异常出现时及时捕获,然后内部消化,让程序继续运行。

3.异常处理机制

Python提供了异常处理机制,可以在异常出现时及时捕获,然后内部消化,让程序继续运行。
第一种: try except 结构

语法:
try:

可能会出现异常的代码

except xxx : (xxx为异常类型)

异常处理代码

try:
    a=int(input('请输入第一个整数:'))
    b=int(input('请输入第二个整数:'))
    result=a/b
    print('结果为:',result)
except ZeroDivisionError:
    print('除数不能为0')
print('程序结束!')

那问题又来了,如果我们程序的异常和我们所写的异常类型不一致该怎么办呢》
答:写多个except结构,捕获异常的顺序按照先子类后父亲类的顺序,为了避免遗漏可能出现的异常,可以在最后增加BaseException :

try:
    a=int(input('请输入第一个整数:'))
    b=int(input('请输入第二个整数:'))
    result=a/b
    print('结果为:',result)
except ZeroDivisionError:
    print('除数不能为0 !')
except ValueError:
    print('输入的数字有误!')
except BaseException as e:
    print(e)
print('程序结束!')

第二种:try…except…else结构
如果try中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块。

try:
    a=int(input('请输入第一个整数:'))
    b=int(input('请输入第二个整数:'))
    result=a/b
    
except BaseException as e:
    print('出错了!')
    print(e)
else:
    print('结果为:',result)

print('程序结束!')

第三种 try…except…else…finally结构
finally块无论是否发生异常都会被执行,常用来释放try块中申请的资源。

try:
    a=int(input('请输入第一个整数:'))
    b=int(input('请输入第二个整数:'))
    result=a/b
    
except BaseException as e:
    print('出错了!')
    print(e)
else:
    print('结果为:',result)
finally:
    print('无论是否产生异常,我都被执行哦!')
print('程序结束!')

4.Python中常见的异常类型

异常类型描述
ZeroDivisionError除数或取模数为0
IndexError序列中没有此索引
KeyError映射中没有这个键
NameError未声明或初始化对象
SyntaxErrorPython语法错误
ValueError传入无效的参数

以上只是常见的一些错误类型,更多的还需要大家在编程的时候多多总结呀!

5.traceback模块的使用

Python的异常处理机制中,有一个traceback模块,我们可以使用此模块来打印异常信息。

import traceback
try:
    print('_________________________')
    print(10/0)
except:
    traceback.print_exe()

6.PyCharm的调试模式

设置断点
设置断点是一种很有效的程序调试方法,方便我们观察程序的运行状况以便做出进一步判断。
Pycharm进入调试视图有三种方式:
①点击工具栏虫子按钮;
②右键点击编辑区,点击debug模块名;
③快捷键sheift+F9
其他的编辑器如VScode等也都大同小异,大家快去试试吧!


🌴总结

今日分享到此结束👊👊👊,由于笔者还在求学之路上辗转徘徊🏃,水平有限,文章中可能有不对之处,还请各位大佬指正🙏,祝愿每一个热爱编程的人都能实现追求,考研上岸进大厂,熬夜秃头卷中王。最后欢迎关注小沐,学习路上不迷路!😜


原文连接:https://blog.csdn.net/weixin_57709996/article/details/124089952

相关推荐

Flask框架——消息闪现

Python动态属性有什么用

python面向对象编程

Python常用基础语法知识点大全

伙伴云戴志康:如何利用低代码提升研发和IT效能

leetcode 2342. Max Sum of a Pair With Equal Sum of Digits (python)

MongoDB安装教程

python基础语法 - 函数

【毕业设计】深度学习 opencv python 实现中国交通标志识别

Kyligence李栋:从数据湖到指标中台,提升数据分析ROI

LabelImg(目标检测标注工具)的安装与使用教程

承上启下继往开来,Python3上下文管理器(ContextManagers)与With关键字的迷思

Python网页解析库:用requests-html爬取网页

科学计算库Numpy基础&提升(理解+重要函数讲解)

秩和比综合评价法(RSR)详解及Python实现和应用

量化交易初学者指南(下)

深度学习的训练、预测过程详解【以LeNet模型和CIFAR10数据集为例】

Anaconda与Jupyter Notebook入门级详细使用教程

Python图像处理丨三种实现图像形态学转化运算模式

【毕业设计】python+大数据构建疫情可视化分析系统