[英]Is there a way to stream line this if-elif-else chain? (Python beginner)
[英]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.