pyschools 主题 3 问题 6
我正在尝试解决这个问题:
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。