[python]bug和debug
bug:代码中存在的语法或者逻辑问题
debug:自查和解决代码中的问题
(coding五分钟,debug两小时)
一、出现bug原因的四大类型
1、粗心
1)错误案例

上面这个错误就是因为 if语句少了【英文冒号】
1)分析问题:
仔细看报错,其中有3个关键信息。
(1)line 2代表这个bug出现在第2行,所以,我们在Debug的时候,可以优先从第2行开始检查
(2)^代表bug发生的位置,这里指出的位置是第二行末尾。
(3)这一行写的是错误类型,SyntaxError指的是语法错误。
(如果不知道报错信息的中文意思,可以把错误信息复制到百度去搜索)

2)总结容易错的地方(初学者的自检清单)

2、知识不熟练
1)错误案例
该代码的目的是取出列表中的'星期日'

2)分析问题
错误原因:忘记了列表的索引是从0而不是从1开始的
从报错信息也可以看出:下表越界
启示:当你发现知识点记不清或者不能确定的时候,就要及时复习或者上网搜索。不要强行写出自己不敢确定的代码,这种情况往往容易出错。如果对某个基础知识点没有熟练的掌握,随着往后知识广度、深度以及项目难度的增加,很可能会增加大量的理解成本,所以多复习、多练习总是没有错滴。
3、思路不清
思路不清指的是当我们解决比较复杂的问题时,由于我们对细节和实现手段思考得不够清楚,要么导致一步错,步步错;要么虽然没有报错,但是程序没有达到我们想要的效
1)错误案例
功能:输入出演者姓名,即可输出他出演的电影,错误代码如下
运行后发现此代码不能实现想要的功能

2)分析问题
解决思路不清的工具

1)遇到关键步骤时print出来,看是否达到我们所期望的结果,以此来揪出错误的那一步。
通过打印发现,取出来的都是字典的键

正确的代码

3)总结

4、被动掉坑
被动掉坑,是指有时候你的代码逻辑上并没有错,但可能因为用户的错误操作或者是一些“例外情况”而导致程序崩溃。
我们举个例子,当运行以下代码的时候,如果输入的东西不是数字,则程序一定会报错。

“ValueError”的意思是“传入无效的参数”。因为,int()函数不能接受非数字的字符串。
2)分析并解决问题
Python给我们提供了一种异常处理的机制,可以在异常出现时即时捕获,然后内部消化掉,让程序继续运行。
try---except语法

多个异常的写法:
如
try: # 尝试执行下列代码
XXXXX
except (ZeroDivisionError,TypeError):
XXXXXX
捕获异常后的代码

案例2

代码要点有两个:
(1)因为不知道用户什么时候才会输入正确,所以设置while循环来接受输入,只要用户输入不是数字就会一直循环,输入了数字就break跳出循环。
(2)使用try……except……语句,当用户输错的时候会给予提示。
关于Python的所有报错类型,有需要的话可以在这里查阅:https://www.runoob.com/python/python-exceptions.html
案例3:

补充;
关于更多异常可参考 https://segmentfault.com/a/1190000007736783
[python]bug和debug的更多相关文章
- python learning Exception & Debug.py
''' 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数open(),成功时返 ...
- Python中如何Debug
debug是编码是非常重要的调试技巧,通过在运行过程中设置断点,帮助开发人员更好的理解运行过程. Python中debug不像JAVA或者C++那样在IDE中设置断点那么直观. Python的debu ...
- python pycharm2018开启debug模式
为什么需要开启DEBUG模式1.如果开启了DEBUG模式,那么在代码中如果抛出了异常,在浏览器的页面中可以看到具体的错误信息,以及具体的错误代码位置,方便开发者调试.2.如果开启DEBUG模式,那么以 ...
- 记intel杯比赛中各种bug与debug【其一】:安装intel caffe
因为intel杯创新软件比赛过程中,并没有任何记录.现在用一点时间把全过程重演一次用作记录. 学习 pytorch 一段时间后,intel比赛突然不让用 pytoch 了,于是打算转战intel ca ...
- python中的debug
python中有很多的debug方法,大部分新人忽略了Python debugger(pdb)的重要性. 1.命令行运行 在终端中输入命令行 python -m pdb helloword.py ...
- python bug the C library strftime function.
import timedef date2mktime(date, format_='%Y-%m-%d'): return int(time.mktime(time.strptime(date, for ...
- 记intel杯比赛中各种bug与debug【其二】:intel caffe的使用和大坑
放弃使用pytorch,学习caffe 本文仅记录个人观点,不免存在许多错误 Caffe 学习 caffe模型生成需要如下步骤 编写network.prototxt 编写solver.prototxt ...
- DTW + python 矩阵操作 + debug
1. from here. diagonalReturn specified diagonals. diagflatCreate a 2-D array with the flattened inp ...
- [python]django关闭debug
1.版本声明 python3.6.5 django2.0.6 2.打开项目-setting setting.py中DEBUG默认是等于True,这样的话当访问接口存在错误会直接展示项目的所有配置信息, ...
随机推荐
- Python中import和from的一些事。。。
摘自python学习手册, 用于记录. 客户端可以执行import或from语句.如果模块还没有加载,这两个语句会去搜索.编译以及执行模块文件程序.主要差别在于,import会读取整个模块,所以必须进 ...
- PHP获取一周后的时间戳
echo strtotime("now");//相当于将英文单词now直接等于现在的日期和时间,并把这个日期时间转化为unix时间戳.这个效果跟echo time();一样. ec ...
- Json学习总结(1)——Java和JavaScript中使用Json方法大全
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语 ...
- WMI获取进程CPU占用率
Monitor % Process CPU Usage (specific process) http://www.tek-tips.com/viewthread.cfm?qid=395765 for ...
- 错误:created a ThreadLocal with key of type ……but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
tomcat reload显示错误:SEVERE: The web application [/Interceptor] created a ThreadLocal with key of type ...
- 【Android】各式各样的弹出框与对菜单键、返回键的监听
Android自带各式各样的弹出框.弹出框也是安卓主要的组件之中的一个.同一时候安卓程序能够对菜单键.返回键的监听.但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键.假设非要对 ...
- android--动态加载、插件化
需求驱动 随着业务发展需要和无线部门的拆分,各业务产品模块归属到各业务BU,原有无线App开发团队被分为基础框架.业务A.业务B.业务C等多个开发团队,从此App的开发和发布进入了一个全新模式.在这种 ...
- Statement和ResultSet
statement.prepareStatement.callableStatement的使用 1.带?参数的使用prepareStatement.这也是使用最多的. 2.不带参数,例如查所用,不需要 ...
- 003 python 注释/数据类型/运算符/输入输出/格式化输出
集成开发环境 pycharm 工欲善其事,必先利其器 pycharm是具备一般的python ide的功能,同时呢支持调试,语法高亮,代码管理,智能提示 加快快发的速度,提高开发效率 注释 what ...
- 小米开源便签Notes-源码研究(0)-整体功能介绍(图文并茂)
本周对小米开源文件管理器,做了整体的研究,大致弄清了源码的来龙去脉,剩下的就是重点研究几个活动的流程了. 讲解Android应用这种可视化的程序,感觉还是有图比较好,不然功能界面都不清楚,自己不好介绍 ...