Python练习——体脂率计算

#通过公式计算体脂率,并且告诉用户是否健康


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)

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值