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()
View Code
补充说明:
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()
View Code
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()
View Code
补充说明:
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()
View Code
补充说明:
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的处理代码