pyschools 主题 3 问题 6

0 投票
4 回答
1279 浏览
提问于 2025-04-17 10:34

我正在尝试解决这个问题:

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

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

BMI = 体重(公斤) / ( 身高(米) * 身高(米) )

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

这是答案:

def BMI(weight, height): 
BMI = round(weight/(float(height)*height),1)
return "%.1f" %BMI
0
if bmi >= 25.5:

应该是

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

你这里写的是大于等于25.5,但说明里说高风险是指BMI超过27.5。

撰写回答