簡體   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