繁体   English   中英

Python大于和小于操作数不起作用?

[英]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.

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