如何简化Python中计算TDEE的自定义函数代码
TDEE计算代码优化方案
原代码的冗余问题主要来自重复定义逻辑相同的函数、提前计算所有场景的结果、多分支判断繁琐,可以通过系数与计算逻辑分离的思路优化,让代码更简洁易维护。
优化思路
- 将不同活动等级对应的TDEE计算系数统一存在有序序列中,用活动等级作为索引直接取对应系数,不需要写多个重复函数
- 仅保留一个通用计算函数,传入BMR和活动等级后单次计算对应结果,避免无用计算
- 增加简单的输入合法性校验,避免输入不存在的活动等级时程序异常
- 修正原代码的类型隐患:活动等级是离散整数值,不需要转为浮点数,规避浮点精度问题导致的分支匹配失败
优化后代码
# 活动等级对应系数:索引对应活动等级,0=久坐、1=轻度活动、2=中度活动,可按需扩展3=高强度活动、4=极高强度活动的系数1.725、1.9 ACTIVITY_FACTORS = [1.2, 1.375, 1.55] def calc_tdee(bmr, activity_level): if 0 <= activity_level < len(ACTIVITY_FACTORS): return bmr * ACTIVITY_FACTORS[activity_level] raise ValueError("活动等级输入不合法,请输入合法的等级数值") if __name__ == "__main__": bmr = float(input("BMR:")) activity_level = int(input("activitylevel:")) tdee = calc_tdee(bmr, activity_level) print("TDEE:", tdee)
优化点说明
- 扩展性更强:后续如果需要新增活动等级、调整系数,只需要修改
ACTIVITY_FACTORS列表即可,不需要改动核心计算逻辑和判断分支 - 代码量更少:去掉了3个重复的计算函数,也不需要提前计算所有等级的TDEE值,运行效率更高
- 可读性更好:系数统一集中定义,每个部分的作用清晰,维护成本更低
内容的提问来源于stack exchange,提问作者emily
相关产品推荐
相关产品推荐

