我有以下python代码:
if bedrooms and 2 > bedrooms > 5:
bn = "BEDROOM NUMBER = " + str(bedrooms)
elif not bedrooms:
bn = "BEDROOMS DOES NOT EXIST"我在调试器中遍历它,并注意到即使我认为卧室=0并且卧室对象存在,流还是跳到elif语句。
为了测试这一点,我尝试了:
>>> bedrooms
0.0
>>> type(bedrooms)
<type 'float'>
>>> if bedrooms and 2 > bedrooms > 5:
... print "bw"
... 什么都没有印出来。因此,似乎2>卧室>5不是真的吗?我做错什么了?
增编:
我没有正确地解释,我不是在寻找2-5之间的数字,而是小于2或大于5。
发布于 2014-10-22 14:50:43
没有一个数字同时小于2和大于5。你把“大于”和“小于”混为一谈。
if bedrooms and 2 < bedrooms < 5:如果你想要一个不介于2到5之间的数字,那么你可以将“小于”改为“小于或等于”,并否定整个事情。
if bedrooms and not (2 <= bedrooms <= 5):发布于 2014-10-22 14:51:33
你的平等符号颠倒了。例如:
>>> 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"这对我来说更有语义,让其他编程人员更容易地理解您想要完成的任务。这种方式更明确,并让其他人知道你明确的目标号码不在这个范围,你处理的案件,卧室可能不存在。
当然,这只是我的两分钱。
如果您期望浮动,则逻辑也可以是:
try:
if not 2 < bedrooms > 5:
bn = "BEDROOM NUMBER = {}".format(bedrooms)
except NameError:
bn = "BEDROOMS DOES NOT EXIST"https://stackoverflow.com/questions/26510368
复制相似问题