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

英制单位下BMI计算器始终显示肥胖的Bug修复请求

修复英制单位BMI计算始终显示"Obese"的问题

嘿,我看到你在自己开发的BMI计算器里碰到了挺闹心的问题——选英制单位时不管输入啥数值,结果都显示“Obese”。咱们来拆解下问题出在哪,然后把它修好。

问题根源分析

你的代码里有几个关键错误导致了这个异常:

  • BMI计算公式完全写错了:英制BMI的正确公式是 (体重lb / (身高in的平方)) × 703,但你写的是 BMI = (weight / height * height *703)。按照Python的运算优先级,weight/height*height 会先算除法再算乘法,结果等于weight,所以最终BMI的数值变成了 体重 ×703,这个数肯定远大于30,直接触发了“Obese”的判断分支。
  • 输入提示有误:英制模式下,输入身高的提示写成了Please enter your weight(in):,这会误导用户把身高数值输成体重,进一步让计算结果偏离正常范围。
  • 无效的比较语句:else块里的Unit == "English"是个比较操作,不是赋值,完全起不到任何作用,属于冗余代码。

修正后的完整代码

print("Body Mass Index Calculator")
unit = input("Metric or English?: (enter M or E)")
if unit == "M":
    weight = float(input("Please enter your weight(kg):"))
    height = float(input("Please enter your height(m):"))
    bmi = weight / height**2
    print("BMI:", bmi)
else:
    weight = float(input("Please enter your weight(lb):"))
    height = float(input("Please enter your height(in):"))
    bmi = (weight / height**2) * 703
    print("BMI:", bmi)

if bmi <= 18.5:
    print("Underweight")
elif 18.5 < bmi <= 24.9:
    print("Normal weight")
elif 25.0 <= bmi <= 29.9:
    print("Overweight")
else:
    print("Obese")

额外优化说明

我还顺手统一了变量名的大小写(原来Metric模式用大写开头,英制用小写,容易混淆),同时简化了条件判断的写法(比如把BMI>=18.5 and BMI<=24.9改成18.5 < bmi <=24.9,更符合Python的语法习惯),这些都是让代码更易读的小细节。

现在你再运行代码试试,英制单位的计算应该就能正常显示对应的BMI分类啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:02:40