You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写bmr.py中的st_jeor函数,用多函数模拟Mifflin St Jeor公式?

嘿,我来帮你搞定这个Mifflin St Jeor基础代谢率的函数实现!根据你描述的需求,我整理了完整且健壮的代码,还加了参数校验来避免无效输入的问题:

实现Mifflin St Jeor基础代谢率计算函数

直接把下面的代码放到你的bmr.py文件里就行:

def st_jeor(mass, height, age, sex):
    # 校验输入参数的合法性,避免无效值导致错误结果
    if not isinstance(mass, (int, float)) or mass <= 0:
        raise ValueError("mass必须是正数,单位为千克")
    if not isinstance(height, (int, float)) or height <= 0:
        raise ValueError("height必须是正数,单位为厘米")
    if not isinstance(age, (int, float)) or age <= 0:
        raise ValueError("age必须是正数,单位为年")
    if sex not in ("male", "female"):
        raise ValueError("sex只能取值为'male'或'female'")
    
    # 根据性别确定公式中的S值
    s = 5 if sex == "male" else -161
    
    # 套用Mifflin St Jeor公式计算基础代谢率
    bmr = 10 * mass + 6.25 * height - 5 * age + s
    return bmr

代码细节说明:

  • 参数校验:我特意加了这部分逻辑,确保用户输入的体重、身高、年龄都是合理的正数,性别也符合指定取值——毕竟如果有人传入负数体重或者拼写错误的性别,函数能直接抛出清晰的错误提示,比默默计算出奇怪的结果要靠谱得多。
  • 性别判断:完全按照你说的规则,男性对应S=+5,女性对应S=-161,用简单的三元表达式实现,简洁易懂。
  • 公式计算:严格遵循Mifflin St Jeor的估算公式,直接返回计算出的基础代谢率数值。

测试示例:

你可以用下面的代码验证函数是否正常工作:

# 计算70kg、175cm、30岁男性的基础代谢率
male_bmr = st_jeor(70, 175, 30, "male")
# 计算60kg、165cm、28岁女性的基础代谢率
female_bmr = st_jeor(60, 165, 28, "female")

print(f"男性基础代谢率: {male_bmr} 卡路里/天")
print(f"女性基础代谢率: {female_bmr} 卡路里/天")

如果你之前已经写了部分代码,只需要把参数校验或者公式计算的部分替换进去就行,这个版本的函数既满足需求又足够健壮。

内容的提问来源于stack exchange,提问作者Yungpythonnoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:14:11