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. 身高;
  4. 体重

上机实验:




mrmr python 实现 python bmr_退出程序

mrmr python 实现 python bmr_mrmr python 实现_02

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,程序持续运行:

上机实验:




mrmr python 实现 python bmr_退出程序

mrmr python 实现 python bmr_mrmr python 实现_02

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增加功能:用户可以在一行输入所有信息,带单位的信息输出

上机实验:




mrmr python 实现 python bmr_退出程序

mrmr python 实现 python bmr_mrmr python 实现_02

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 增加功能:处理异常操作

上机实验:




mrmr python 实现 python bmr_退出程序

mrmr python 实现 python bmr_mrmr python 实现_02

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()>



  1. 当Python遇到try语句,先尝试执行try包含的代码块;
  2. 如果没有错误发生,执行try-except后面的语句
  3. 如果发生错误,Python寻找一个符合该错误的异常语句,然后执行相应的except的处理代码