1.案例描述
基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上。
计算公式:
BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6.8*年龄)+ 66
BMR(女) = (9.6*体重kg) + (1.8*身高cm)-(4.7*年龄)+655
2.0增加功能:根据用户输入BMR参数,计算BMR值,支持持续输入。
3.0增加功能:用户可以在一行输入所有信息,带单位的信息输出。
4.0增加功能:处理异常操作
2.案例分析
引入异常处理机制,来解决程序运行时的错误。
try: <body> except<ErrorType1>: <handler1> except<ErrorType2>: <handler2> except: <handler0>
先执行try,存在异常则选择一个最匹配的except执行对应的处理语句,无异常则直接执行try-except后边语句。
最常见的except类型是IndexError(索引错误),KeyError(键错误),ValueError(值错误),TypeError 传入对象类型与要求的不符合。常见异常汇总参考
3.上机实验
""" 作者:梁斌 功能:BMR计算器 版本:4.0 日期:04/08/2017 3.0 增加功能:用户可以在一行输入所有信息,带单位的信息输出 4.0 增加功能:处理异常操作 """ def main(): """ 主函数 """ y_or_n = input('是否退出程序(y/n)?') while y_or_n != 'y': # # 性别 # gender = input('性别:') # # print(type(gender)) # # # 体重 (kg) # weight = float(input('体重(kg):')) # # print(type(weight)) # # # 身高 (cm) # height = float(input('身高(cm):')) # # print(type(height)) # # # 年龄 # age = int(input('年龄:')) # # print(type(age)) 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)?') if __name__ == '__main__': main()
参考文档: