2015-10-09 104 views
0

我正在計算Python 3中某個人的BMI,並且需要檢查BMI是否在兩個值之間。使用Python檢查變量是否在兩個值之間

這是我的代碼:

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) 

這將輸出減持完美的罰款,但其他人一樣非常不定義文本。

輸出:

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

請修復代碼縮進。 –

+0

你應該用[Ashalynd](http://stackoverflow.com/a/33035965/2723675)回答你的用例,但如果有人根據標題在這個頁面上絆倒了,你可以檢查一個變量是否是在兩個數字之間像這樣:'if min iLoveTux

回答

5

你的BMI沒有下的任何條件下降(這是超過24且小於25,這是不屬於你的情況下)。

事實上,可以簡化您的空調是這樣的:

if bmi < 18: 
    text = 'Underweight' 

elif bmi <= 24: # we already know that bmi is >=18 
    text = 'Ideal' 

elif bmi <= 29: 
    text = 'Overweight' 

elif bmi <= 39: 
    text = 'Obese' 

else: 
    text = 'Extremely Obese' 
+0

你爲什麼這麼認爲? – Ashalynd

+0

對不起取消...... elifs會在真實......之後跳過,但會有更明確的範圍。將刪除我的評論 – Joop

+0

謝謝,這工作完美 –

0

您可能需要給BMI轉換爲一個整數值。

bmi = int (weight/heightSquared) 

此外,你可能需要極端Obse是> = 39(不是40)。

0

我不能運行python來測試它,但通過簡單地檢查你的代碼我可以告訴你在你的邏輯中有一個錯誤。

您的理想BMI結束於24(含)和超重開始於25(含)。因此,您的if沒有覆蓋24和25之間的值。所以你的BMI 24.7的例子也不被覆蓋。

你可以簡單地通過在24(獨佔)開始超重來解決這個問題。超重和肥胖之間的邏輯錯誤完全相同。

相關問題