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