捕捉异常:try except
利用异常处理语句,令程序不炸。
try:
user_weight = float(input("请输入您的体重(单位:kg):"))
user_height = float(input("请输入您的身高(单位:m):"))
user_BMI = user_weight / user_height ** 2
except ValueError: #如果用户输入的不是浮点值,就会产生报错
print("输入不为合理数字,请重新运行程序,并输入正确的数字。")
except ZeroDivisionError:#如果用户输入的不是浮点值,就会产生报错
print("身高不能为零,请重新运行程序,并输入正确的数字。")
except:#捕捉所有的错误类型
print("发生了未知错误,请重新运行程序。")
else:
print("您的BMI值为:"+ str(user_BMI))
finally: #无论程序错误与否,都回到以下指令
print("程序结束运行。")
如果第一个except语句就捕捉到了对应错误,后面的except就都不会执行了。
else:如果前面的语句全部没有语法错误,就会出现else。
finally:无论前面的运行如何,finally都会运行成功。
- 产生值错误时会运行

- 产生除零错误时会运行

- 产生其他错误时会运行(捕捉所有的错误)

实战练习:
尝试两个input,分别输入体重和身高。计算出两个值的和。
user_input1 = input("请输入第一个数字:")
user_input2 = input("请输入第二个数字:")
int(user_input1) + int(user_input2)
#如果这里不用int(),会报错。因为input输出的是字符串,两个字符串不能相加。
如果此时用户输入了一个非整数(not int),就会出现报错。
所以使用try-except 捕捉 ValueError错误。
user_input1 = input("请输入第一个数字:")
user_input2 = input("请输入第二个数字:")
try: #把try写在你认为有问题的那行上面
result = int(user_input1) + int(user_input2)
except ValueError:
print("请输入合理的数字。")
else:#用户没有输入任何错误
print(result)
3102

被折叠的 条评论
为什么被折叠?



