基础代谢率

本文介绍了基础代谢率(BMR)的概念,并提供了计算BMR的公式,特别针对Python编程,讲解了如何处理用户输入、类型转换、循环以及异常处理机制来实现BMR计算。通过示例展示了如何从一行输入中获取参数并进行友好的结果输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础代谢率(简称:BMR)是指:我们在安静状态下消耗的最低热量,人的其他活动都建立在这个基础上。

计算公式:

BMR(男) = (13.7体重(kg)) + (5.0身高(cm)) - (6.8*年龄))+ 66

BMR(女) = (9.6体重(kg)) + (1.8身高(cm)) - (4.7*年龄) + 655

目前,只是简单的计算,不做任何的变化。简单输入变量,通过if语句判断得到输出结果。

1.0

def main():
    global bmr
    gen = "女"
    weight = 55
    height = 170
    age = 16
    if gen == "男":
        bmr = (13.7 * weight) + (5.0 *height )- (6.8 * age + 66)
    elif gen == "女":
        bmr = (9.6 * weight) + (3.8 *height )- (4.7 * age + 655)
    print(bmr)
​
if __name__ == '__main__':    
    main()

Python中常用的数值类型:

整数类型,与数学中的整数概念一致。如:100、-300

浮点数类型,带有小数点及小数的数值。如:0.0、3.14

类型转换

整数-->浮点数 float(4)->4.0

浮点数-->整数 int(3.14)-->3,只会保留整数部分

字符串-->整数、浮点数 int('4')->4 ,float('3.14')->3.14

如何判断类型?type()函数

2.0

""""
    新增功能:根据用户输入计算BMR;程序持续运行
""""
def main():
​
    y_or_n = input("是否退出程序(y/n)?")
​
    while y_or_n != 'y':
        gender=input("男or女:")
        weight=float(input('输入体重'))
        height=float(input('输入身高'))
        age=int(input('输入年龄'))
        if gender=='男':
            bmr=(13.7*weight)+(5.0*height)-(6.8*age)+66
            print('bmr:',bmr)
        elif gender=='女':
            bmr=(9.6*weight)+(1.8*height)-(4.7*age)+655
        else:
            bmr = -1
​
        if bmr != -1:
            print('基础代谢率(大卡):',bmr)
        else:
            print('暂不支持该性别')
        print()
        y_or_n = input("是否退出程序(y/n)?")
if __name__ =="__main__":
    main()

print(type(gender))

print(type(weight))

print(type(height))

print(type(age))

这些语句的目的:可以查看参数的字符类型,实际可以不写到程序中。

循环运行程序,用到了while循环语句。

3.0

2.0版本通过用户输入参数,计算BMR,但是每一个参数都是先提示了再输入。现在用户想在一行中将参数全部输入完,点击执行立刻可以得到计算结果。

那么,3.0就是为了解决一行输入参数,以及友好型的带单位的信息输出。

"""
    新增功能:用户可以在一行输入所有信息,带单位的信息输出
"""
def main():
​
    y_or_n = input("是否退出程序(y/n)?")
​
    while y_or_n != 'y':
        print("请输入以下信息,用空格分隔")
        input_str= input("性别 体重(kg) 身高(cm) 年龄:")
        str_list = input_str.split(' ')
        gender=str_list[0]
        weight=float(str_list[1])
        height=float(str_list[2])
        age=int(str_list[3])
​
        if gender=='男':
            bmr=(13.7*weight)+(5.0*height)-(6.8*age)+66
            print('bmr:',bmr)
        elif gender=='女':
            bmr=(9.6*weight)+(1.8*height)-(4.7*age)+655
        else:
            bmr = -1
​
        if bmr != -1:
            print("您的性别:{},体重:{}公斤,身高:{}厘米,年龄:{}岁".format(gender,weight,height,age))
            print('您的基础代谢率:{}大卡'.format(bmr))
        else:
            print('暂不支持该性别')
        print()
        y_or_n = input("是否退出程序(y/n)?")
if __name__ =="__main__":
    main()

将一行字符串,分割并且分别赋值给不同的参数,用到str.split()和str[],如下图所示:

 

说明2:在输出结果时,将得到的结果字符串格式化输出,使用{}占位。

str.format() 如:‘{}公斤,{}厘米’.format(70, 175)

重复输出时可以使用数字标:‘{0}公斤,{1}厘米,{1}厘米’.format(70, 175)

得到的结果为:70公斤,175厘米,175厘米

4.0

异常处理机制:

--引入异常处理机制可以用来解决程序运行时的错误

语法:

当Python遇到try语句,先尝试执行try包含的代码块,这部分代码块是可能出现错误的代码块。 如果没有错误发生,执行try-except后面的语句。 如果发生错误,Python寻找一个符合该错误的异常语句,然后执行相应的except的处理代码。

"""
    新增功能:对异常情况处理
"""
def main():
​
    y_or_n = input('是否退出程序(y/n)?')
​
    while y_or_n != 'y':
        print('请输入一下信息,用空格分割!')
        input_str = input('性别 体重(kg) 身高(cm) 年龄')
        str_list = input_str.split(' ')
        try:
            gender = str_list[0]
            weight = float(str_list[1])
            height = float(str_list[2])
            age = int(str_list[3])
​
            if gender == '男':
                bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66
            elif gender == '女':
                bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655
            else:
                bmr = -1
​
            if bmr != -1:
                print('您的性别:{},体重:{}kg,身高:{}cm,年龄:{}岁'.format(gender, weight, height, age))
                print('您的基础代谢率BMR:{} 大卡'.format(bmr))
            else:
                print('该版本暂时不支持改性别!')
        
        except ValueError:
            print('请输入正确的信息!')
​
        except IndexError:
            print('输入信息过少!')
​
        except:
            print('程序异常!')
​
        print()
​
        y_or_n = input('是否退出程序(y/n)?')
​
 if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值