Python学习笔记 | 异常处理
一、异常处理机制
1、场景
在计算BMR值的案例中,用户输入的字符串进行分割后,可能出现缺失信息,或者无法转化为数值型等错误。
但用户输入的错误类型无法全部捕捉到,普通if语句无法涵盖所有错误。
这时,为了给用户良好体验,需要对所有可能的错误进行提示。
2、用法
补充:
- 如果try后发生错误,看错误类型符合except后哪个类型,就它执行后面的操作
- except后面可以跟初恋type1 type2以外所有的错误
- 可以先试错,看程序报什么错误类型,先捕捉到except里面。如:ValueError、IndexError
二、Python代码
def main():
"""
主函数
"""
y_or_n = input('是否退出程序(y/n)')
while y_or_n != 'y':
print('请输入以下信息,用空格分割')
input_str = input('性别,体重(kg),身高(cm),年龄')
str_list = input_str.split(' ')
try: #处理输入异常
gender = str_list[0]
weight = float(str_list[1])
height = float(str_list[2])
age = int(str_list[3])
if gender == '男':
bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66
elif gender == '女':
bmr = (9.6 * weight) + (1.8 *height) - (4.7 * age) + 655
else:
bmr = -1
if bmr != -1:
print('您的性别:{}, 体重:{}公斤, 身高:{}厘米, 年龄:{}岁'.format(gender, weight, height, age))
print('您的基础代谢率:{}大卡'.format(bmr))
else:
print('暂不支持该性别')
except ValueError:
print('请输入正确信息!')
except IndexError:
print('输入信息过少!')
except:
print('程序异常!')
print()
y_or_n = input('是否退出程序(y/n)')
print('程序已退出!')
if __name__ == '__main__':
main()
结果展示: