2017-10-15 4 views
0

リストをループして、要素が何かと等しくないかどうかをチェックしたいと思います。以下のコード...OR論理演算子が期待どおりに動作しないループのために

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

機能を通過するリストに関係なく、常にfalseを出力します。 しかし、条件の1つのみを検討するように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 

私は、これは

を役に立てば幸い
関連する問題