zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Laravel在不同的环境调用不同的配置文件
    Sphinx全文索引 第一节
    Eclipse 快捷键 (应用中自己总结)
    Ehcache计算Java对象内存大小
    计算Java对象内存大小
    HashMap
    CPU高的排查
    JVM-GC学习
    详细分析Java中断机制-转载
    GC知识记录
  • 原文地址:https://www.cnblogs.com/mml-blog/p/10628478.html
Copyright © 2011-2022 走看看