Debug-python学习18

报错实例分析

一:学会看报错信息:

仔细看报错,其中有3个关键信息。

(1)line 2代表这个bug出现在第2行,所以,我们在Debug的时候,可以优先从第2行开始检查。

(2)^代表bug发生的位置,这里指出的位置是第二行末尾。

(3)这一行写的是错误类型,SyntaxError指的是语法错误。

二、报错总结2:

1.TypeError:must be str,not int类型错误:必须是一个字符串,不是数字解决办法:使用+拼接时必须使用字符串,或将数字转化成字符串。

2.SyntaxErrou:invalid syntax 语法错误 :非法的语法解决办法:看报错信息在第几行,从这一行往上找错误;

3.IndentationError: unindent does not match any outer indentation levelindent 缩进错误 : 未知缩进不匹配任何缩进等级解决办法:tab自动缩进

4.IndexError: string index out of range索引错误:字符串超出了范围解决办法:查看字符串的长度 索引要小于长度;

5.ValueError: substring not found值错误:子字符串未找到

6.IndexError: list index out of range索引错误:列表索引超出范围;

7.AttributeError: 'tuple' object has no attribute 'remove'属性错误:元组对象没有属性'remove'

8.KeyError: 'fond'key 键错误:没有指定的键值“fond”

9.TypeError: pop expected at least 1 arguments, got 0类型错误:pop方法希望得到至少一个参数,但是现在参数为0;

10.SyntaxError: Non-UTF-8 code starting with '\xe7'语法错误:Non-UTF-8 代码不行解决方法:在第一行写:coding:utf-8 ,然后注释掉;

三、报错实例分析1:

这里有3处问题:(1)没有定义变量n,就使用n<3 (可以定义变量n=0);

(2)=是赋值,判断两个值是否相等应该用==;

(3)2处else后面都漏了冒号。

四、粗心的错误清单:

五、解决思路不清的问题:

2个工具:

1、借助print()函数;

2、借助#号注释一些代码;

可以用print()函数来帮助看看到底是怎么回事,打印出来的actors是什么?

后面的代码可以先注释掉,以便检查。也就是在代码前面分别加一个#。(多行注释有两种快捷操作:1、在需要注释的多行代码块前后加一组三引号''' 

2、选中代码后使用快捷键操作:Windows快捷键是ctrl+/,Mac为cmd+/。

五、异常处理机制:

try…except…语句:

为了不让一些无关痛痒的小错影响程序的后续执行,Python给我们提供了一种异常处理的机制,可以在异常出现时即时捕获,然后内部消化掉,让程序继续运行。


代码要点有两个:(1)因为不知道用户什么时候才会输入正确,所以设置while循环来接受输入,只要用户输入不是数字就会一直循环,输入了数字就break跳出循环。(2)使用try……except……语句,当用户输错的时候会给予提示。

注意:这里的ValueError是报错类型

你可能感兴趣的:(Debug-python学习18)