我在Python 3中计算一个人的BMI,需要检查BMI是否介于两个值之间。
这是我的代码:
def metricBMI():
text = str('placeholder')
#Get height and weight values
height = float(input('Please enter your height in meters: '))
weight = float(input('Please enter your weight in kilograms: '))
#Square the height value
heightSquared = (height * height)
#Calculate BMI
bmi = weight / heightSquared
#Print BMI value
print ('Your BMI value is ' + str(bmi))
if bmi < 18:
text = 'Underweight'
elif 24 >= bmi and bmi >= 18:
text = 'Ideal'
elif 29 >= bmi and bmi >= 25:
text = 'Overweight'
elif 39 >= bmi and bmi >= 30:
text = 'Obese'
elif bmi > 40:
text = 'Extremely Obese'
print ('This is: ' + text)
这将输出Underweight非常好,但像Ideal这样的其他人不会定义文本。
输出:
Calulate BMI, BMR or Harris Benedict Equation (HBE) or exit? bmi
Do you work in metric (M) or imperial (I)m
Please enter your height in meters: 1.8
Please enter your weight in kilograms: 80
Your BMI value is 24.691358024691358
This is: placeholder
我猜测我检查变量的方式有问题,但我无法看到它。
谢谢,
杰克
答案 0 :(得分:5)
您的BMI不属于您的任何条件(超过24且低于25,并且您的案件不在此范围内)。
事实上,你可以像这样简化你的条件:
import play.api.libs.json._
import play.api.libs.functional.syntax._
答案 1 :(得分:0)
您可能需要将bmi转换为整数值。
bmi = int (weight / heightSquared)
此外,您可能需要极度观察为&gt; = 39(不是40)。
答案 2 :(得分:0)
我无法运行python来测试它,但只需检查你的代码,我就可以告诉你在你的逻辑中有一个错误。
你的理想BMI以24(含)结束,超重从25(含)开始。所以你的if不包括24到25之间的值。所以BMI 24.7的例子也没有涵盖。
你可以通过在24(独家)开始超重来解决这个问题。你在Overweight和Obese之间有完全相同的逻辑错误。