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的處理代碼