如何将Python BMI与基础代谢率计算器应用于患者列表?
批量计算患者BMI与基础代谢率实现方案
第一步:修正患者数据错误
原患者字典中Damien的年龄键拼写错误(aage_patient → age_patient),先修正该问题,避免后续计算出现KeyError。
第二步:封装可复用的计算函数
把BMI计算、BMI健康分类判断、基础代谢率计算逻辑拆分为独立函数,方便批量调用:
calcul_imc(poids, taille):计算BMI数值get_imc_classification(imc):返回BMI对应的健康状态分类calcul_metabolisme_base(poids, taille, age, sexe):计算基础代谢率(MB)
第三步:批量遍历患者列表计算并输出
循环遍历患者字典,为每个患者提取数据、调用计算函数,最后格式化展示结果。
完整修改后的代码
# 修正后的患者列表(修复Damien的年龄键拼写错误) patients = { 1: {"nom_patient":"Olivier", "sexe_patient":'H', "age_patient":35, "poids_patient":78, "taille_patient":1.85}, 2: {"nom_patient":"Claire", "sexe_patient":'F', "age_patient":28, "poids_patient":64, "taille_patient":1.74}, 3: {"nom_patient":"Damien", "sexe_patient":'H', "age_patient":65, "poids_patient":89, "taille_patient":1.71} } def calcul_imc(poids, taille): return poids / (taille ** 2) def get_imc_classification(imc): if imc <= 18.99: return "体重过轻,患病风险增加" elif imc < 24.99: return "体重正常,患病风险较低" elif imc < 29.99: return "超重,患病风险增加" else: return "中度肥胖,患病风险较高" def calcul_metabolisme_base(poids, taille, age, sexe): if sexe == 'H': return 3.707 * poids + 492.3 * taille - 6.673 * age + 77.607 elif sexe == 'F': return 9.740 * poids + 172.9 * taille - 4.737 * age + 667.051 else: return None # 批量处理所有患者 for patient_id, patient_info in patients.items(): nom = patient_info["nom_patient"] sexe = patient_info["sexe_patient"] age = patient_info["age_patient"] poids = patient_info["poids_patient"] taille = patient_info["taille_patient"] # 计算BMI及健康分类 imc = calcul_imc(poids, taille) imc_class = get_imc_classification(imc) # 计算基础代谢率 mb = calcul_metabolisme_base(poids, taille, age, sexe) # 格式化输出结果 print(f"=== 患者 {nom} 的计算结果 ===") print(f"BMI值: {imc:.2f}") print(f"健康状况: {imc_class}") print(f"基础代谢率(MB): {mb:.2f} kcal/天\n")
代码说明
- 修正原数据的拼写错误,确保遍历过程不会报错
- 函数封装后逻辑更清晰,后续调整计算规则或扩展功能更便捷
- 循环遍历患者字典时,通过键值对逐个提取患者信息并处理
- 输出结果保留两位小数,格式更直观易读
内容的提问来源于stack exchange,提问作者JCVD
相关产品推荐
相关产品推荐

