首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python大于或小于操作数不起作用?

Python大于或小于操作数不起作用?
EN

Stack Overflow用户
提问于 2014-10-22 14:48:52
回答 2查看 7.2K关注 0票数 0

我有以下python代码:

代码语言:javascript
复制
    if bedrooms and 2 > bedrooms > 5:
        bn = "BEDROOM NUMBER = " + str(bedrooms)           
    elif not bedrooms:
        bn = "BEDROOMS DOES NOT EXIST"

我在调试器中遍历它,并注意到即使我认为卧室=0并且卧室对象存在,流还是跳到elif语句。

为了测试这一点,我尝试了:

代码语言:javascript
复制
>>> bedrooms
0.0
>>> type(bedrooms)
<type 'float'>
>>> if bedrooms and 2 > bedrooms > 5:
...     print "bw"
...     

什么都没有印出来。因此,似乎2>卧室>5不是真的吗?我做错什么了?

增编:

我没有正确地解释,我不是在寻找2-5之间的数字,而是小于2或大于5。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-22 14:50:43

没有一个数字同时小于2和大于5。你把“大于”和“小于”混为一谈。

代码语言:javascript
复制
if bedrooms and 2 < bedrooms < 5:

如果你想要一个不介于2到5之间的数字,那么你可以将“小于”改为“小于或等于”,并否定整个事情。

代码语言:javascript
复制
if bedrooms and not (2 <= bedrooms <= 5):
票数 3
EN

Stack Overflow用户

发布于 2014-10-22 14:51:33

你的平等符号颠倒了。例如:

代码语言:javascript
复制
>>> 2 > 4 > 5
False

试一试:

代码语言:javascript
复制
if bedrooms and 2 < bedrooms < 5:

这会给你一种行为,我想你是想:

代码语言:javascript
复制
>>> 2 < 4 < 5
True

增编上的更新:当前的逻辑有点尴尬。也许是这样的:

代码语言:javascript
复制
try: 
   if bedrooms not in [2,3,4,5]:
       bn = "BEDROOM NUMBER = {}".format(bedrooms)           
except NameError:
   bn = "BEDROOMS DOES NOT EXIST"

这对我来说更有语义,让其他编程人员更容易地理解您想要完成的任务。这种方式更明确,并让其他人知道你明确的目标号码不在这个范围,你处理的案件,卧室可能不存在。

当然,这只是我的两分钱。

如果您期望浮动,则逻辑也可以是:

代码语言:javascript
复制
try: 
   if not 2 < bedrooms > 5:
       bn = "BEDROOM NUMBER = {}".format(bedrooms)           
except NameError:
   bn = "BEDROOMS DOES NOT EXIST"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26510368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档