报错实例分析
一:学会看报错信息:
仔细看报错,其中有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是报错类型