pyschools主题3 Q 6

时间:2012-01-19 01:05:56

标签: python

我正试图解决这个问题:

http://www.pyschools.com/quiz/view_question/s3-q6

  

使用'if / elif / else'条件编写函数来计算人的BMI,并返回与心血管疾病相关的风险。

     

BMI =体重(kg)/(身高(m)*身高(m))

     

BMI风险

     

27.5及以上高风险

     

23 - 27.4中等风险

     

18.5 - 22.9低风险

     

低于18.5营养缺乏症的风险

     

实施例

     

HealthScreen(85,1.75)

     

'你的BMI是27.8(高风险)。'

     

HealthScreen(68,1.65)

     

'你的BMI是25.0(中度风险)。'

     

HealthScreen(60,1.63)

     

'你的BMI是22.6(低风险)。'

     

HealthScreen(40,1.58)

     

'你的BMI是16.0(营养缺乏症的风险)。'

但是我使用此代码验证了私有测试用例

def HealthScreen(weight, height):
    bmi = round(weight/(float(height)*height),1)
    retv = "Your BMI is " +str(bmi)
    if bmi >= 25.5:
        retv += " (High Risk)."
    elif bmi >=23 and bmi <=27.4:
        retv += " (Moderate Risk)."
    elif bmi >= 18.5 and bmi <=22.9:
        retv += " (Low Risk)."
    elif bmi <18.5:
        retv += " (Risk of nutritional deficiency diseases)."
    return retv

我知道代码不是很漂亮,但它经历了大量的反复试验。我想添加代码来检查给定数字中的任何一个是否为零,但仍然失败。

我没看到什么?

4 个答案:

答案 0 :(得分:3)

if bmi >= 25.5:
    retv += " (High Risk)."

您指定&gt; = 25.5但在说明中指出高风险是BMI超过27.5

答案 1 :(得分:0)

if bmi >= 25.5:

应该是

if bmi >= 27.5:

答案 2 :(得分:0)

以下是答案:

def BMI(weight, height): 
BMI = round(weight/(float(height)*height),1)
return "%.1f" %BMI

答案 3 :(得分:0)

def HealthScreen(weight, height):
height=float(height)
bmi=weight/height**2
if bmi>=27.5:
    return 'Your BMI is %.1f (High Risk).' %bmi
elif 27.4>bmi>23:
    return 'Your BMI is %.1f (Moderate Risk).' %bmi
elif 22.9>bmi>18.5:
    return 'Your BMI is %.1f (Low Risk).' %bmi
else:
    return 'Your BMI is %.1f (Risk of nutritional deficiency diseases).' %bmi