#通过公式计算体脂率,并且告诉用户是否健康
def ObtainDataFromUser():
while True:
try:
weight = float(input("请输入体重:\n"))
if not 0 < weight < 200:
print("请输入正确人类范围的体重,并且单位是 \"KG\"")
else:
#输入的体重正确,跳出当前while 循环, 进入到下一个while循环
break
except :
print("请正确输入体重")
while True:
try:
height = float(input("请输入身高:\n"))
if not 0.5 < height < 3.0:
print("请输入正确人类范围的身高,并且单位是 \"米\"")
else:
break
except:
print("请正确输入身高")
while True:
try:
age = int(input("请输入年龄:\n"))
if not 0 < age < 200:
print("请输入正确人类范围的年龄")
else:
break
except:
print("请正确输入年龄")
while True:
try:
gender = int(input("请输入性别(男1 女0):\n"))
if not 0<=gender<=1:
print("请正确输入性别,女是0,男是1")
else:
break
except:
print("请正确输入性别")
return weight,height,age,gender
def CheckHealthyByBodyFatRate(weight,height,gender:int,age:int):
BMI= CalcBMI(weight,height)
BFR= CalcBodyFatRate(BMI,age,gender)
ShowFinalResult(BFR,gender)
# BMI=体重(KG)/(身高*身高)(米)
def CalcBMI(weight,height):
# 身高是 “米”,体重是 “KG”
return weight / (height ** 2)
# 体脂率=1.2*BMI+0.23*年龄—5.4-10.8*性别(男:1 女:0)
def CalcBodyFatRate(BMI:float,age:int,gender:int):
if not(type(gender)==int and 0<=gender<=1):
print("请正确输入性别,女是0,男是1")
return
# age = float(age)
# gender = float(gender)
# print( type(BMI),type(age),type(gender))
return 1.2*BMI+0.23*float(age)-5.4-10.8*float(gender)
#正常成年人的体脂率分别是男性15%~18%和女性25%~28%
def ShowFinalResult(BFR,gender):
if not (type(gender) == int and 0 <= gender <= 1):
print("请正确输入性别,女是0,男是1")
return
#男性
# print(BFR)
if (gender==1 and 15<BFR<18) or(gender==0 and 25<BFR<28):
print("您的体脂率是{0},是健康的。".format(BFR))
else:
print("您的体脂率是%.2f%%,是不健康的,请多锻炼!!"%BFR)
weight, height, age, gender=ObtainDataFromUser()
CheckHealthyByBodyFatRate(weight,height,gender,age)