2017-10-15 91 views
0

我想通過列表循環檢查其元素是否不等於某事。代碼如下...for循環與OR邏輯運算符不按我期望

def full_board_check(board): 
    for item in board: 
     if item != 'X' or item != 'O': 
      return False 
     else: 
      return True 

無論通過哪個列表函數,它總是輸出false。 但是,如果我將if語句更改爲僅考慮其中一個條件,則會成功檢查該條件。

def full_board_check(board): 
    for item in board: 
     if item != 'X': 
      return False 
     else: 
      return True 

我在這裏錯過了什麼?

回答

0

如果item中的每個元素均有效,則要返回True。你不應該在那裏使用or,你應該使用and

將比較容易與字符串進行比較,並使用in進行成員資格測試。您還可以使用all更簡潔地完成此操作。

for item in board: 
    return all(x in 'XO' for x in item) 
0

您有一個合乎邏輯的問題。我建議你學習一些邏輯來充分理解編程中的邏輯陳述。沒有可以與X或O不同的字母。如果您評估X,那麼該字母與O不同,因此輸出爲False,對於X也是如此。在更多數學語言中,您正在評估的子集是無效的。

如果要評估每個元素不是X或O

if item == 'X' or item == 'O': 
     return True 
    else: 
     return False 

我希望這有助於