1. BUG的由来及分类
  2. 不同异常类型的处理方式
  3. 异常处理机制
  4. PyCharm的调试模式

BUG的由来及分类

世界第一部万用计算机进化版-马克2号

bug常见的类型

粗心导致的语法错误类型SyntaxError

(1)age=input('请输入你的年龄:')

if age>=18

print('成年人, 你该负法律责任了')

指出错误

input是str类型的 age也是str类型的 18是整数类型

使用转换字符来改错

age=input('请输入你的年龄:')
print(type(age))
if int(age)>=18:#将age转换为整数类型print('成年人, 你该负法律责任了')

while i<10:

print(i)

错误没有给i赋值

改错如下

i=3
while i<10:print(i)i+=1#否则i将是一个死循环状态

========================================================================

for i in range(3):uname=input('亲输入用户名:')pwd=input('亲输入密码:')if uname='admin' and pwd='admin':print('登陆成功')breakelseprint('输入有误')
elseprint('对不起,三次据输入错误')
指出错误

赋值要用‘==’

else后没有加冒号:


for i in range(3):uname=input('亲输入用户名:')pwd=input('亲输入密码:')if uname=='admin' and pwd=='admin':print('登陆成功')breakelse:print('输入有误')
else:print('对不起,三次据输入错误')

粗心导致错误的自查宝典

  1. 漏了末尾的冒号,如if语句,循环语句else子句等
  2. 缩进错误,该缩进的没缩进,不该缩进的缩进
  3. 把英文字符写成中文字符,把数字和字符拼接在一起
  4. 没有定义变量,比如说while的循环条件变量
  5. “==”比较运算符和“==”赋值运算符的混用

bug的常见类型

知识不熟练导致的错误

索引越界问题IndexError

lst=[11, 22, 33, 44]

print(lst[4])

lst=[11, 22, 33, 44]#索引是从0开始的,在这里面没有第四个元素
#print(lst[4])
print(lst[3])

append()方法的使用掌握不熟练

lst=[]

lst=append('A', 'B', 'C')

print(lst)

错误:

append的使用方法不对

append的添加方式一次只能添加一个

lst=[]
#lst=append('A', 'B', 'C')
lst.append('A')
lst.append('B')
lst.append('C')
print(lst)

bug的常见类型

思路不清导致的问题解决方案

使用print()函数

使用’#'暂时注释部分代码

题目要求

豆瓣电影TOP250排行榜,使用列表存储电影信息

要求输入名字在屏幕上显示XXX出演了哪部电影

错误的代码


lst=[{'rating':[9, 7, 50], 'id':'1292052', 'type':['犯罪', '剧情'], 'title':'肖申克的救赎', 'acrots':['蒂姆.罗宾斯', '摩根.弗里曼']},{'rating':[9, 6, 50], 'id':'1291546', 'type':['爱情', '剧情', '同性'], 'title':'霸王别姬', 'acrots':['张国荣', '张丰毅', '巩俐', '葛优']},{'rating':[9, 6, 50], 'id':'1296141', 'type':['犯罪', '剧情'], 'title':'控方证人', 'acrots':['泰隆.鲍华', '玛丽.弗里曼']}]name=input('请输入你要查询的演员:')
for item in lst:for movie in item:actors=movie['actors']print(actors)if name in actors:print(name+'出演了:'+movie)

lst=[{'rating':[9, 7, 50], 'id':'1292052', 'type':['犯罪', '剧情'], 'title':'肖申克的救赎', 'acrots':['蒂姆.罗宾斯', '摩根.弗里曼']},{'rating':[9, 6, 50], 'id':'1291546', 'type':['爱情', '剧情', '同性'], 'title':'霸王别姬', 'acrots':['张国荣', '张丰毅', '巩俐', '葛优']},{'rating':[9, 6, 50], 'id':'1296141', 'type':['犯罪', '剧情'], 'title':'控方证人', 'acrots':['泰隆.鲍华', '玛丽.弗里曼']}]name=input('请输入你要查询的演员:')
for item in lst:#遍历列表会得到一个花括号 item是一个又一个的字典for movie in item:#遍历的字典,得到movie,是一个字典中的keyprint(movie)'''actors=movie['actors']print(actors)if name in actors:print(name+'出演了:'+movie)'''

结果

请输入你要查询的演员:张国荣
rating
id
type
title
acrots
rating
id
type
title
acrots
rating
id
type
title
acrots

Process finished with exit code 0

改正之后


lst=[{'rating':[9, 7, 50], 'id':'1292052', 'type':['犯罪', '剧情'], 'title':'肖申克的救赎', 'acrots':['蒂姆.罗宾斯', '摩根.弗里曼']},{'rating':[9, 6, 50], 'id':'1291546', 'type':['爱情', '剧情', '同性'], 'title':'霸王别姬', 'acrots':['张国荣', '张丰毅', '巩俐', '葛优']},{'rating':[9, 6, 50], 'id':'1296141', 'type':['犯罪', '剧情'], 'title':'控方证人', 'acrots':['泰隆.鲍华', '玛丽.弗里曼']}]name=input('请输入你要查询的演员:')
for item in lst:#遍历列表会得到一个花括号 item是一个又一个的字典act_lst=item['acrots']for actor in act_lst:if name in actor:print(name, '出演了', item['title'])'''actors=movie['actors']print(actors)if name in actors:print(name+'出演了:'+movie)'''

将不必要出错的注释掉

然后可以使用print()函数来检查调试

先将得到演员的列表

然后看演员是否在这个列表中

在的话输出这个演员和他所出演的电影的名称

===================================================================

被动掉坑:程序代码逻辑没有错只是因为,用户错误操作或者一些例外的情况而导致的程序崩溃

输入两个整数并进行除法运算

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

当除数为0时会报错我们可以使用这样的机制去将结果不报错

try:

.........

...........

.........

except ZerDivisionError

有多个错误的时候

捕获异常的顺序按照先子类后父亲类的顺序,为了避免遗漏的可能,可以在最后增加

BaseException

try:

.....

.....

.....

except Exception 1:

.........

..........

.........

except Exception 2:

.........

..........

.........

except   BaseException:

..........

.........

..........

try...except...else


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

try...except...else..finally


try:a = int(input('请输入一个整数:'))b = int(input('请输入另一个整数:'))result = a / b
except BaseException as e:print('出错了', e)
else:print('计算结果为:', result)
finally:print('谢谢您的使用')
序号 异常类型 描述
1 ZeroDivisionError 除(或取模)零(所有数据类型)
2 IndexError

序列中没有此索引(index)

3 KeyError

映射中没有这个键

4 NameError 未声明/初始化对象没有属性
5 SyntaxError Python 语法错误
6 ValueError

传入无效的参数据

traceback模块


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

Traceback (most recent call last):
  File "E:/新建文件夹/bug的常见类型.py", line 29, in <module>
    print(1/0)
ZeroDivisionError: division by zero

bug常见的类型 粗心导致的语法错误 自查宝典
知识点不熟悉 练,练,练
思路不清 print()语句
使用#注释
被动掉坑 try except

python的Bug相关推荐

  1. Python:Bug 官网不要了,全迁去 GitHub

    近几年,GitHub 开发者数量逐年上升,仅过去一年 GitHub 的新增用户便有 1600 万人,总用户数更是达到了 7300 万--在开源浪潮席卷全球中,GitHub 无疑成为了许多开发者迈入开源 ...

  2. Nature论文爆出千行Python代码Bug,或影响百篇学术论文

    你的论文借鉴了 Nature 文章的代码?对不起,论文可能要重新写了. 在 10 月 8 日发表于<ACS Publication>期刊的一篇论文中,来自夏威夷大学的 Jayanti Bh ...

  3. Python:Bug 官网不要了,全迁去 GitHub!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 近几年,GitHub 开发者数量逐年上升,仅过去一年 GitHub 的新增用户便有 1600 万人,总用户数更是达到了 7300 万-- ...

  4. Python脚本BUG引发学界震动,影响有多大?

    作者 | beyondma 编辑 | Jane 来源 | CSDN博客 近日一篇"A guide to small-molecule structure assignment through ...

  5. 自动检索、修复Python代码bug,微软推出DeepDebug

    视学算法报道 机器之心编辑部 还在为不断的 debug 代码烦恼吗? 本地化 Bug 并修复程序是软件开发过程中的重要任务.在本篇论文中,来自微软 Cloud+AI 部门的研究者介绍了 DeepDeb ...

  6. python错误bug调试问题汇总

    1  Python-出现"Non-ASCII character '\xe6' in file"错误解决方法 2 python中for循环语句使用 3 Python解决两个整数相除 ...

  7. python面试题之有没有一个工具可以帮助查找python的bug和进行静态的代码分析?

    pycheck pylint 本文首发于python黑洞网,csdn同步更新

  8. Python每日bug定时发送飞书群

    每日定时发送缺陷统计情况 项目地址: https://github.com/liyinchigithub/feishu-robot 一.准备工作 1.找一个飞书创建群聊,添加一个自己的机器人应用,可以 ...

  9. Python机器学习bug:ValueError_ Expected 2D array, got 1D array instead

    0 前言 在学习机器学习时,为了便于理解观察,有时候会拿一些一维的数组进行测试,在初学阶段可能就难免会踩到这个坑.这个bug处理起来比较简单,就是将一维的数组变成二维的数组. 相关环境: Window ...

最新文章

  1. Centos7.6 下部署Cobbler
  2. Arcface v1 论文翻译与解读
  3. DL之Attention-ED:基于TF NMT利用带有Attention的 ED模型训练、测试(中英文平行语料库)实现将英文翻译为中文的LSTM翻译模型过程全记录
  4. nodejs+webpack+vue以及npm安装对应的库
  5. centos中bash占用cpu,Linux中显示内存和CPU使用率最高的进程和SHELL脚本例子
  6. Odoo10教程---模块化二:模型间关系,继承,计算字段等
  7. Tip: 强制 Outlook 用户使用缓存模式
  8. 基本操作?这46个 Linux 面试常见问题送给你
  9. rs232转usb驱动_RS232的使用 最少需要3根线
  10. 阿里首席架构师讲解“双十一”亿级流量高并发的系统架构搭建方法
  11. MOSFet cutoff frequency ( From google)
  12. MT1308芯片原厂
  13. ATTCK 1一个烂尾的学习记录
  14. Win7 usb连接打印机无法使用,在控制面板有usbprint小黄感叹号,windows update无法找到相应驱动。
  15. Adobe的后期摄影图片处理软件Photoshop Lightroom(Lr) 6.2版本下载与安装教程
  16. 百度TTS,支持离线环境下使用
  17. Java web 图书管理系统
  18. java将“2018年4月8日”转换成正常日期:2018年04月08日
  19. 《红楼梦》金陵十二钗判词及赏析
  20. 为什么虚拟现实视频看上去那么粗糙?

热门文章

  1. 2021-3-30 hackbar
  2. 秒表工具类StopWatch
  3. hdu6217 - BBP Formula
  4. RabbitMQ的相关概念以及RabbitMQ的安装
  5. Java 多线程(超详细)
  6. 搜狗输入法的使用感受与评价
  7. 牛逼!StarRocks 2.0正式发布,新一年,新启航,新极速!
  8. 如何直接从手机内存中获取CellID?
  9. mp4视频无法播放的解决方法
  10. MySQL上机第一章,创建S,C,T,SC,TC表