基礎代謝率的計算是一個公式,男性和女性的計算不同,根據基本的計算公式可以用Python代碼實現不同的功能。
1.0:簡單的計算器,根據給定的具體數據進行計算。根據輸入的性別不同進行判斷(輸入的性別必須爲“男”或“女”,否則報錯),男性和女性分別執行不同的計算。
def main():
gender = "男"
weight = 70
height = 175
age = 25
if gender=="男":
gmr = 13.7 * weight + 5.0 * height - 6.8 * age + 66
elif gender=="女":
gmr = 9.6 * weight + 3.8 * height - 4.7 * age + 655
else:
gmr =- 1
if gmr!=-1:
print("基礎代謝率(大卡):",gmr)
else:
print("暫不支持該性別!")
if __name__=="__main__":
main()
2.0:1.0 只能計算一個用戶的BMR,2.0 版本加入循環可以多次計算不同用戶的BMR。
def main():
y_or_n = input("是否退出程序(退出請輸入yes,否則輸入no)?")
while (y_or_n != "yes"):
gender = input("性別:")
#print(type(gender))
weight = float(input("體重(kg):"))
#print(type(weight))
height = float(input("身高(cm):"))
#print(type(height))
age = int(input("年齡:"))
#print(type(age))
if gender=="男":
gmr = 13.7 * weight + 5.0 * height - 6.8 * age + 66
elif gender=="女":
gmr = 9.6 * weight + 3.8 * height - 4.7 * age + 655
else:
gmr = -1
if gmr!=-1:
print("基礎代謝率(大卡):",gmr)
else:
print("暫不支持該性別!")
print()#輸出空行
y_or_n = input("是否退出程序(退出請輸入yes)?")
if __name__=="__main__":
main()
在while循環內,用戶可以根據系統提示依次輸入性別、體重、身高、年齡的信息,然後根據性別進行計算。爲了界面更加友好,系統會提示是否退出計算系統,而while循環的結束條件爲退出計算系統。另一個解決的問題爲:用戶在input()中輸入的體重、身高、年齡信息爲str,計算時需要轉化爲整型或浮點型,int() 和 float() 實現了這種轉化。
3.0:實現功能爲:(1)用戶可以一次輸入自己的所有信息,不必根據系統提示輸入多次。(2)1.0 和 2.0 版本的輸出結果不帶單位(大卡),3.0 實現了輸出帶單位的計算結果。
def main():
y_or_n = input("是否退出程序(退出請輸入yes,否則輸入no)?")
while (y_or_n != "yes"):
print("請輸入以下個人信息,中間用空格隔開")
person_str = input("性別:體重(kg):身高(cm):年齡:")
person = person_str.split(" ")
gender = person[0]
weight = float(person[1])
height = float(person[2])
age = int(person[3])
if gender=="男":
gmr = 13.7 * weight + 5.0 * height - 6.8 * age + 66
elif gender=="女":
gmr = 9.6 * weight + 3.8 * height - 4.7 * age + 655
else:
gmr = -1
if gmr!=-1:
print("您的性別爲{},體重爲{}kg,身高爲{}cm,年齡爲{}歲".format(gender,weight,height,age))
print("您的基礎代謝率爲{}大卡".format(gmr))
else:
print("暫不支持該性別!")
print()#輸出空行
y_or_n = input("是否退出程序(退出請輸入yes)?")
if __name__=="__main__":
main()
第一個功能的實現運用了.split() 函數。用戶根據提示依次輸入個人信息,用空格隔開。.split() 函數將str按空格分割,返回爲一個帶有用戶信息的列表,用列表切片實現了對用戶性別、體重、身高、年齡信息的提取;第二個功能的實現運用了.format() 函數,這是一個增強的格式化字符串函數,可以以“***大卡”的形式輸出計算結果,當然也可以用 print(gmr,"大卡") 輸出,不過這樣不具有整體性。 print("您的性別爲{},體重爲{}kg,身高爲{}cm,年齡爲{}歲".format(gender,weight,height,age)) 這裏也體現了.format() 函數的功能,還可以使系統界面更加友好。
4.0:處理異常操作問題。有些用戶會不安套路,輸入個人信息時不是系統的默認格式,這樣系統就會報錯,解決這樣的異常操作,需要用到 try-except。
(1)輸入體重、身高、年齡時輸入漢子形式,這樣用戶信息就不能轉化爲整型和浮點型,會出現ValueError錯誤。
(2)用戶輸入信息不完整,系統無法提取有效信息,會出現IndexError錯誤。
除了以上兩種錯誤,還可能出現一些無法預見的錯誤,爲保證系統正常運行,需要用except將這些錯誤排除在執行計算程序。
def main():
y_or_n = input("是否退出程序(退出請輸入yes,否則輸入no)?")
while (y_or_n != "yes"):
print("請輸入以下個人信息,中間用空格隔開")
person_str = input("性別:體重(kg):身高(cm):年齡:")
person = person_str.split(" ")
try:
gender = person[0]
weight = float(person[1])
height = float(person[2])
age = int(person[3])
if gender=="男":
gmr = 13.7 * weight + 5.0 * height - 6.8 * age + 66
elif gender=="女":
gmr = 9.6 * weight + 3.8 * height - 4.7 * age + 655
else:
gmr = -1
if gmr!=-1:
print("您的性別爲{},體重爲{}kg,身高爲{}cm,年齡爲{}歲".format(gender,weight,height,age))
print("您的基礎代謝率爲{}大卡".format(gmr))
else:
print("暫不支持該性別!")
except ValueError:
print("請輸入正確的個人信息!")
except IndexError:
print("請輸入完整的個人信息!")
except:
print("系統有誤!")
print() # 輸出空行
y_or_n = input("是否退出程序(退出請輸入yes)?")
if __name__=="__main__":
main()