常见的错误:
语法错误:SyntaxError
少了符号
英文符号打成中文符号
"="和"=="混用
没有定义变量:NameError
参数错误:IndexError
参数超出范围:
对数据类型理解错误:TypeError
append()只能接受一个参数,但是里面有三个参数
正确写法:
常见的debug方式:
print()函数
遇到关键步骤时print出来,看是否达到我们所期望的结果,以此来揪出错误的那一步。
不了解数据类型可以通过print()验证
使用print看看输出的值是否为你想要的
不报错但可以使用print()进行debug:
为什么猜0和1都不对呢?使用print看看到底存了什么数
修改:
将toss强行转化为str类型
多加注释配合理清思路
因此,当你写的代码总是不对,又弄不明白哪里不对的时候,使用#号把后面的代码注释掉,一步一步运行,可以帮助排除错误。
被动掉坑,即符合程序逻辑,但不符合人类思维逻辑的程序
对于int()来说‘abc’是不合法的
try...except捕获bug导致程序中断:
为了不让一些无关痛痒的小错影响程序的后续执行,Python给我们提供了一种异常处理的机制,可以在异常出现时即时捕获,然后内部消化掉,让程序继续运行。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
这就是try…except…语句,具体用法如下:
让我们举个例子。刚才的报错,可以查到报错类型是“ValueError”传入无效的参数:
这个过程大致思路就是我想try尝试执行一下,如果有报错,看看能不能通过except判断出来,如果可以判断出来,执行except下的代码,否则直接报错,中断程序的执行
常用方式(重要):
代码:
代码要点有两个:
(1)因为不知道用户什么时候才会输入正确,所以设置while循环来接受输入,只要用户输入不是数字就会一直循环,输入了数字就break跳出循环(配合input函数使用)
(2)使用try……except……语句,当用户输错的时候会给予提示。而不会直接导致程序中断
练习:
尝试使用try…except改造此函数,变得更加人性化
最后,关于Python的所有报错类型,有需要的话可以在Python 异常处理查阅:https://www.runoob.com/python/python-exceptions.html
补充:使用断点来debug函数执行过程
- 证明函数在定义时,函数体中的代码是不执行的
- 当函数调用时,程序才会跳转到函数体中执行函数的代码
- 函数体中的代码执行完成后,回到调用处
def show(): print("show..."+str(num)) print("start") for num in range(1,6): show() print("stop")
debug执行过程
课后练习:
找出下列代码的错误,并将其纠正。
deposit = [100,300,900,2000,5000,0,2000,4500]
for i in range(1, len(deposit)):
times = deposit[i]/deposit[i-1]
print('你的存款涨了%f倍'%times)
deposit = [100,300,900,2000,5000,0,2000,4500]
发布者:LJH,转发请注明出处:https://www.ljh.cool/7835.html