【每天學點Python】案例三:BMR計算器


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. 體重

上機實驗:

 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()>
  1. 當Python遇到try語句,先嘗試執行try包含的代碼塊;
  2. 如果沒有錯誤發生,執行try-except后面的語句
  3. 如果發生錯誤,Python尋找一個符合該錯誤的異常語句,然后執行相應的except的處理代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM