使用Python检查变量是否介于两个值之间

时间:2015-10-09 10:27:07

标签: python

我在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

我猜测我检查变量的方式有问题,但我无法看到它。

谢谢,

杰克

3 个答案:

答案 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之间有完全相同的逻辑错误。