繁体   English   中英

初学者Python 3.x循环问题-ifif-else

[英]Beginner Python 3.x loop question if - elif - else

if totalbmi <= 19:
    print('Your bmi is {}, you are underweight'.format(totalbmi))
elif totalbmi >= 20 or totalbmi <= 28:
    print('Your bmi is {} you are normal weight'.format(totalbmi))
else:
    totalbmi >= 29
    print('your bmi is {} you are overweight'.format(totalbmi))

正在返回:您的体重指数是55.4016620498615,您的体重正常。

对这个明显愚蠢的初学者问题很抱歉,但是我是一个愚蠢的初学者,从逻辑上讲,我觉得一切正确。 如果totalbmi是大于20或小于28的数字,则它将按预期方式返回“正常权重”。 如果totalbmi是一个小于或等于19的数字,它将按预期方式再次返回“体重不足”。 但是任何> = 29的东西似乎总是循环回到“您的体重正常”,而没有返回“您的体重超重”……应该吗?

在此先感谢您的帮助

应为elif totalbmi >= 20 and totalbmi <= 28:

您可以使用if-elif-else执行的逻辑:Python从上到下运行。 这意味着它将从上到下检查条件,并在条件满足时中断。 如果是这种情况,那么可以这样做:

if totalbmi > 28:
    print('your bmi is {} you are overweight'.format(totalbmi))
elif totalbmi > 19:
    print('Your bmi is {:} you are normal weight'.format(totalbmi))
else:
    print('Your bmi is {}, you are underweight'.format(totalbmi))

同意乔纳森的观点,但最好的仍然是:

elif 20 <= totalbmi <= 28:

演示:

if totalbmi <= 19:
    print('Your bmi is {}, you are underweight'.format(totalbmi))
elif 20 <= totalbmi <= 28:
    print('Your bmi is {} you are normal weight'.format(totalbmi))
elif totalbmi >= 29:
    print('your bmi is {} you are overweight'.format(totalbmi))

其他解决方案:

elif int(totalbmi) in range(20,29):

演示:

if totalbmi <= 19:
    print('Your bmi is {}, you are underweight'.format(totalbmi))
elif int(totalbmi) in range(20,29):
    print('Your bmi is {} you are normal weight'.format(totalbmi))
elif totalbmi >= 29:
    print('your bmi is {} you are overweight'.format(totalbmi))

同意或条件检查是否有任何条件为真。 可以说totalbmi = 66以便达到elif totalbmi> = 66如此为真,这就是为什么它要打印elif的打印语句而从未到达else部分。

在使用且totalbmi> = 66(条件为真)和totalbmi <= 66(条件为假)时,它跳转到else部分并打印该语句

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM