更多内容,请访问个人 我的博客。python
咱们在写程序的时候最喜闻乐见的就是程序打印出咱们想要的结果。编程
最怕的就是程序没有按照咱们预先设想的样子运行,完了还爆出一堆的错误信息。bash
本章要介绍的就是python中的报错信息。报错信息有不少种,这里介绍两种比较常见的报错信息:ui
咱们先来看看什么是语法错误。还记得咱们以前讲的for循环语句,必需要带冒号,若是不带冒号,就会报语法错误。spa
list = ['苹果', '西瓜', '葡萄']
for lt in list
print(lt)
for lt in list
^
SyntaxError: invalid syntax
复制代码
若是循环语句中没有缩进,也会报语法错误。code
list = ['苹果', '西瓜', '葡萄']
for lt in list:
print(lt)
print(lt)
^
IndentationError: expected an indented block
复制代码
报错信息中写的很清楚,按照提示修改就能够了。blog
在语法正确的状况下,若是程序中出现逻辑错误,那么也是会报错的,这类错误就是逻辑异常。ip
好比计算1/0,咱们知道0是不能做为除数的,这属于逻辑错误,程序就会报异常。get
a = 1 / 0
print(a)
a = 1 / 0
ZeroDivisionError: division by zero
复制代码
再好比这个例子,程序就会报异常,说b这个玩意儿没有定义,不知道是啥。input
a = 1 / b
print(a)
a = 1 / b
NameError: name 'b' is not defined
复制代码
有的时候咱们怀疑某段代码可能会报错,或者说是担忧会报错,可是又不但愿程序会所以断掉。这时候咱们就能够用try语句捕获异常信息。
try:
1/0
except:
print('程序报错了')
print('不管1/0对不对,我都不但愿程序停止')
复制代码
正如上面这个例子,虽然1/0是逻辑错误,可是程序并不会报错,程序会依次输出这两句话,而后程序正常退出。
咱们也能够根据报错信息的不一样作分类处理。
try:
a/0
except ZeroDivisionError:
print('0不能做为被除数')
except NameError:
print('变量没有被定义')
复制代码
正如上面这个例子,咱们能够分别捕获 0不能做为被除数
和 变量没有被定义
这两类异常信息。
固然,咱们也能够加上else语句,当try里的内容一点错误也没有时,执行else里的代码。
try:
a/0
except ZeroDivisionError:
print('0不能做为被除数')
except NameError:
print('变量没有被定义')
else:
print('没有任何报错')
复制代码
尝试给下列代码添加上try语句,并分别捕获 ZeroDivisionError
、NameError
异常。
x = int(input("请输入一个整数: "))
y = 1 / x
print(x + "的倒数是:" + y)
复制代码
关注公众号:潘高陪你学编程,回复020,获取习题答案。