python的Bug
- BUG的由来及分类
- 不同异常类型的处理方式
- 异常处理机制
- 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('对不起,三次据输入错误')
粗心导致错误的自查宝典
- 漏了末尾的冒号,如if语句,循环语句else子句等
- 缩进错误,该缩进的没缩进,不该缩进的缩进
- 把英文字符写成中文字符,把数字和字符拼接在一起
- 没有定义变量,比如说while的循环条件变量
- “==”比较运算符和“==”赋值运算符的混用
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相关推荐
- Python:Bug 官网不要了,全迁去 GitHub
近几年,GitHub 开发者数量逐年上升,仅过去一年 GitHub 的新增用户便有 1600 万人,总用户数更是达到了 7300 万--在开源浪潮席卷全球中,GitHub 无疑成为了许多开发者迈入开源 ...
- Nature论文爆出千行Python代码Bug,或影响百篇学术论文
你的论文借鉴了 Nature 文章的代码?对不起,论文可能要重新写了. 在 10 月 8 日发表于<ACS Publication>期刊的一篇论文中,来自夏威夷大学的 Jayanti Bh ...
- Python:Bug 官网不要了,全迁去 GitHub!
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 近几年,GitHub 开发者数量逐年上升,仅过去一年 GitHub 的新增用户便有 1600 万人,总用户数更是达到了 7300 万-- ...
- Python脚本BUG引发学界震动,影响有多大?
作者 | beyondma 编辑 | Jane 来源 | CSDN博客 近日一篇"A guide to small-molecule structure assignment through ...
- 自动检索、修复Python代码bug,微软推出DeepDebug
视学算法报道 机器之心编辑部 还在为不断的 debug 代码烦恼吗? 本地化 Bug 并修复程序是软件开发过程中的重要任务.在本篇论文中,来自微软 Cloud+AI 部门的研究者介绍了 DeepDeb ...
- python错误bug调试问题汇总
1 Python-出现"Non-ASCII character '\xe6' in file"错误解决方法 2 python中for循环语句使用 3 Python解决两个整数相除 ...
- python面试题之有没有一个工具可以帮助查找python的bug和进行静态的代码分析?
pycheck pylint 本文首发于python黑洞网,csdn同步更新
- Python每日bug定时发送飞书群
每日定时发送缺陷统计情况 项目地址: https://github.com/liyinchigithub/feishu-robot 一.准备工作 1.找一个飞书创建群聊,添加一个自己的机器人应用,可以 ...
- Python机器学习bug:ValueError_ Expected 2D array, got 1D array instead
0 前言 在学习机器学习时,为了便于理解观察,有时候会拿一些一维的数组进行测试,在初学阶段可能就难免会踩到这个坑.这个bug处理起来比较简单,就是将一维的数组变成二维的数组. 相关环境: Window ...
最新文章
- Centos7.6 下部署Cobbler
- Arcface v1 论文翻译与解读
- DL之Attention-ED:基于TF NMT利用带有Attention的 ED模型训练、测试(中英文平行语料库)实现将英文翻译为中文的LSTM翻译模型过程全记录
- nodejs+webpack+vue以及npm安装对应的库
- centos中bash占用cpu,Linux中显示内存和CPU使用率最高的进程和SHELL脚本例子
- Odoo10教程---模块化二:模型间关系,继承,计算字段等
- Tip: 强制 Outlook 用户使用缓存模式
- 基本操作?这46个 Linux 面试常见问题送给你
- rs232转usb驱动_RS232的使用 最少需要3根线
- 阿里首席架构师讲解“双十一”亿级流量高并发的系统架构搭建方法
- MOSFet cutoff frequency ( From google)
- MT1308芯片原厂
- ATTCK 1一个烂尾的学习记录
- Win7 usb连接打印机无法使用,在控制面板有usbprint小黄感叹号,windows update无法找到相应驱动。
- Adobe的后期摄影图片处理软件Photoshop Lightroom(Lr) 6.2版本下载与安装教程
- 百度TTS,支持离线环境下使用
- Java web 图书管理系统
- java将“2018年4月8日”转换成正常日期:2018年04月08日
- 《红楼梦》金陵十二钗判词及赏析
- 为什么虚拟现实视频看上去那么粗糙?