BMR计算器
V1.0
案例描述:
- 基础代谢率(Basal Metabolic Rate,简称BMR)是指:我们在安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上
- 计算公式:
- BMR(男)=(13.7*体重(Kg))+(5.0*身高(cm))-(6.8*年龄)+ 66
- BMR(女)=(9.6*体重(Kg))+(1.8*身高(公分))-(4.7*年龄)+ 655
案例分析:
输入:
- 性别;
- 体重;
- 身高;
- 体重
上机实验:
1 """ 2 作者:王鑫正 3 功能:BMR计算器 4 版本:V1.0 5 日期:2018年9月19日 6 """ 7 8 def main(): 9 """ 10 主函数 11 """ 12 # 性别 13 gender = '男' 14 15 # 体重(kg) 16 weight = 70 17 18 # 身高(cm) 19 height = 175 20 21 # 年龄 22 age = 25 23 24 if gender == '男': 25 # 男性 26 bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66 27 elif gender == '女': 28 # 女性 29 bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655 30 else: 31 bmr = -1 32 33 if bmr != -1: 34 print('基础代谢率(大卡)', bmr) 35 else: 36 print('暂不支持该性别') 37 38 39 if __name__ == '__main__': 40 main()
补充说明:
1. 数值类型:
- 整数类型,与数学中的整数概念一致,如:100,-250
- 浮点数类型,带有小数点及小数的数值,如:0.0, -3.14, 3.4e-3
- 类型转换:
- 整数->浮点数,float(4)->4.0
- 浮点数->整数,int(3.14)->3,只保留整数部分
- 字符串->整数,int('4')->4
- 字符串->浮点数,float('3.14')->3.14
- 判断数据类型:type()函数
V2.0增加功能:根据用户输入计算RMB,程序持续运行:
上机实验:
1 """ 2 作者:王鑫正 3 功能:BMR计算器 4 版本:V2.0 5 日期:2018年9月19日 6 新增功能:根据用户输入计算RMB,程序持续运行: 7 """ 8 9 def main(): 10 """ 11 主函数 12 """ 13 y_or_n = input('是否退出程序(y/n)?') 14 15 while y_or_n != 'y': 16 # 性别 17 gender = input('性别:') 18 print(type(gender)) 19 20 # 体重(kg) 21 weight = float(input('体重(Kg):')) 22 print(type(weight)) 23 24 # 身高(cm) 25 height = float(input('身高(cm):')) 26 print(type(height)) 27 28 # 年龄 29 age = int(input('年龄:')) 30 print(type(age)) 31 32 if gender == '男': 33 # 男性 34 bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66 35 elif gender == '女': 36 # 女性 37 bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655 38 else: 39 bmr = -1 40 41 if bmr != -1: 42 print('基础代谢率(大卡)', bmr) 43 else: 44 print('暂不支持该性别') 45 46 print() # 无参输出空行 47 y_or_n = input('是否退出程序(y/n)?') 48 49 50 if __name__ == '__main__': 51 main()
V3.0增加功能:用户可以在一行输入所有信息,带单位的信息输出
上机实验:
1 """ 2 作者:王鑫正 3 功能:BMR计算器 4 版本:V3.0 5 日期:2018年9月19日 6 新增功能:用户可以在一行输入所有信息,带单位的信息输出 7 """ 8 9 10 def main(): 11 """ 12 主函数 13 """ 14 y_or_n = input('是否退出程序(y/n)?') 15 16 while y_or_n != 'y': 17 print('请输入以下信息,用空格分割') 18 input_str = input('性别 体重(kg) 身高(cm)年龄:') 19 str_list = input_str.split(' ') 20 gender = str_list[0] 21 weight = float(str_list[1]) 22 height = float(str_list[2]) 23 age = int(str_list[3]) 24 25 if gender == '男': 26 # 男性 27 bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66 28 elif gender == '女': 29 # 女性 30 bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655 31 else: 32 bmr = -1 33 34 if bmr != -1: 35 print('性别:{3},体重:{2}kg,身高:{1}cm,年龄:{0}岁'.format(age, height, weight, gender)) 36 print('您的基础代谢率:{}大卡'.format(bmr)) 37 else: 38 print('暂不支持该性别') 39 40 print() # 无参输出空行 41 y_or_n = input('是否退出程序(y/n)?') 42 43 44 if __name__ == '__main__': 45 main()
补充说明:
1. 字符串分割:
- str.spilt()
2. 字符串格式化输出,使用{}占位
- str.format()
- Demo:
- '性别:{},体重:{}kg,身高:{}cm,年龄:{}岁'.format(gender, weight, height, age)
- 重复输出时可以使用数字标记顺序:
- '性别:{3},体重:{2}kg,身高:{1}cm,年龄:{0}岁'.format(age, height, weight, gender)
V4.0 增加功能:处理异常操作
上机实验:
1 """ 2 作者:王鑫正 3 功能:BMR计算器 4 版本:V4.0 5 日期:2018年9月19日 6 新增功能:处理异常操作 7 """ 8 9 10 def main(): 11 """ 12 主函数 13 """ 14 y_or_n = input('是否退出程序(y/n)?') 15 16 while y_or_n != 'y': 17 print('请输入以下信息,用空格分割') 18 input_str = input('性别 体重(kg) 身高(cm)年龄:') 19 str_list = input_str.split(' ') 20 21 try: 22 gender = str_list[0] 23 weight = float(str_list[1]) 24 height = float(str_list[2]) 25 age = int(str_list[3]) 26 27 if gender == '男': 28 # 男性 29 bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66 30 elif gender == '女': 31 # 女性 32 bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655 33 else: 34 bmr = -1 35 36 if bmr != -1: 37 print('性别:{3},体重:{2}kg,身高:{1}cm,年龄:{0}岁'.format(age, height, weight, gender)) 38 print('您的基础代谢率:{}大卡'.format(bmr)) 39 else: 40 print('暂不支持该性别') 41 except ValueError: 42 print('请输入正确的信息!') 43 except IndexError: 44 print('输入的信息过少!') 45 except: 46 print('程序异常') 47 48 print() # 无参输出空行 49 y_or_n = input('是否退出程序(y/n)?') 50 51 52 if __name__ == '__main__': 53 main()
补充说明:
1. 异常处理机制
- 引入异常处理机制可以用来解决程序运行是的错误
- 语法:
1 try: 2 <body> 3 except<ErrotType1>: 4 <handler1> 5 except<ErrotType2>: 6 <handler2> 7 except: 8 <handler()>
- 当Python遇到try语句,先尝试执行try包含的代码块;
- 如果没有错误发生,执行try-except后面的语句
- 如果发生错误,Python寻找一个符合该错误的异常语句,然后执行相应的except的处理代码
