[英]Python greater than and less than operands not working?
我有以下python代码:
if bedrooms and 2 > bedrooms > 5:
bn = "BEDROOM NUMBER = " + str(bedrooms)
elif not bedrooms:
bn = "BEDROOMS DOES NOT EXIST"
我在调试器中逐步检查它,发现即使我认为bedroom = 0且存在bedroom对象,该流程也会跳转到elif语句。
为了测试这一点,我尝试了:
>>> bedrooms
0.0
>>> type(bedrooms)
<type 'float'>
>>> if bedrooms and 2 > bedrooms > 5:
... print "bw"
...
什么也没印出来。 因此,似乎2>卧室> 5是不正确的? 我究竟做错了什么 ?
附录:
我没有正确解释,我不是在寻找2-5之间的数字,而是小于2或大于5。
您的等号相反。 例如:
>>> 2 > 4 > 5
False
尝试以下方法:
if bedrooms and 2 < bedrooms < 5:
这会给你行为,我想你要去:
>>> 2 < 4 < 5
True
附录更新:当前逻辑有些尴尬。 也许是这样的:
try:
if bedrooms not in [2,3,4,5]:
bn = "BEDROOM NUMBER = {}".format(bedrooms)
except NameError:
bn = "BEDROOMS DOES NOT EXIST"
这对我来说更具语义,让其他程序员更轻松地了解您要完成的工作。 这种方式更加明确,让其他人知道您的明确定位数字不在该范围内,并且您正在处理卧室可能不存在的情况。
当然,这只是我的2美分。
如果期望浮动,则逻辑也可以是:
try:
if not 2 < bedrooms > 5:
bn = "BEDROOM NUMBER = {}".format(bedrooms)
except NameError:
bn = "BEDROOMS DOES NOT EXIST"
没有同时小于2且大于5的数字。 您混合了“大于”和“小于”。
if bedrooms and 2 < bedrooms < 5:
如果您想要的数字不在2到5之间,则可以将“小于”更改为“小于或等于”,然后取整。
if bedrooms and not (2 <= bedrooms <= 5):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.