2013-10-14 194 views
0

我正在研究一个BMI计算器,并为它的“状态”部分提供了一堆if语句。出于某种原因,我通过Eclipse发现错误“预计:)”,但我不知道缺少什么。Python if语句的语法?

这里是抛出错误的代码示例:

BMI = mass/(height ** 2) 

if(BMI < 18.5): 
    status = "Underweight" 

if(BMI => UNDERWEIGHT and BMI < NORMAL): 
    status = "Normal" 

if(BMI => NORMAL & BMI < OVERWEIGHT): 
    status = "Overweight" 

elif(BMI >= 30): 
    status = "Obese" 
+0

你在哪里看到这个错误 –

回答

3

=>并不意味着在Python什么。 “大于或等于”代替>=

+2

其值得注意的是,如果你使用第二和第三'if'语句'elif'和'else'最后一个,你就不需要做任何'> ='测试。另一个问题是在第三个测试中的&。 – Blckknght

2

您可以更改:

if(BMI => NORMAL & BMI < OVERWEIGHT): 

到:

if(BMI >= NORMAL and BMI < OVERWEIGHT): 

随着其他的一些建议,你可能会重新写整个语句为:

if BMI < UNDERWEIGHT: 
    status = "Underweight" 

elif BMI >= UNDERWEIGHT and BMI < NORMAL: 
    status = "Normal" 

elif BMI >= NORMAL and BMI < OVERWEIGHT: 
    status = "Overweight" 

elif BMI >= OVERWEIGHT: 
    status = "Obese" 
+3

你可能要考虑摆脱(和)。 –

+0

谢谢 - 更新。 –

0
BMI = mass/(height ** 2) 

if (BMI < 18.5): 
    status = "Underweight" 
elif (UNDERWEIGHT < BMI < NORMAL): 
    status = "Normal" 
elif (NORMAL < BMI < OVERWEIGHT): 
    status = "Overweight" 
else 
    status = "Obese" 

在python中,我们可以检查一个数字是否在范围内,这样

if 0 < MyNumber < 2: 

这将是Truthy只有当mynumber的是

+0

我认为OP在几个地方想要<=而不是<< – Stuart

4

如已经在其他的答案指出0和2之间的一些数量,错误是由=>引起的,并且&bitwise operator这是不你在这方面想要什么。但是根据@Blckknght的评论,无论如何,只要每次比较最大值就可以简化它。另外,请删除括号,因为Python中不需要这些括号。

BMI = mass/(height ** 2)  
if BMI < UNDERWEIGHT: 
    status = "Underweight" 
elif BMI < NORMAL: 
    status = "Normal" 
elif BMI < OVERWEIGHT: 
    status = "Overweight" 
else: 
    status = "Obese"