Python 版本:2.7
只是想知道下面的代码有什么问题:
def bmi_cat(bmi):
if bmi < 18.5:
return "underweight"
elif (bmi >=18.5 or bmi < 25):
return "normal"
elif (bmi >=25 or bmi < 30):
return "overweight"
else:
return "obese"
基本上,如果我输入 17,它会给出正确答案,但它会给出高于 18.5 的正常值(3000 给出正常值而不是肥胖等...)
请您参考如下方法:
你想要and不是 or ...它需要满足两个条件...您也可以用 Python 将其编写为 if 18.5 <= bmi < 25让它更清楚并避免这种情况......
还可以考虑查看 http://docs.python.org/2/library/bisect.html它可以为你做这种事情,如果你有更大的范围,它会更好地扩展。看看 grade example .
