このように考えてみてください。
a != b or b != c or a != c
が、その後、偽の場合
a == b and b == c and a == c
DeMorgan's Laws
は、このようなケースである理由を説明します。
<->は、基本的には「互いに等価」という意味
~(A \/ B) <-> ~A /\ ~B
~(A /\ B) <-> ~A \/ ~B
は、~
手段「ではない、」\/
手段「または」、および/\
手段ことを忘れないでください「と。」このコードを通過する
:
def green_ticket_value(a, b, c):
if a != b or b != c or a != c:
return 0
# It can *never* be the case that a != c or a != b at this point
elif a == b and a != c or b == c and b != a or a == c and a!= b:
return 0 // Should this be "return 10"?
# What did you mean to do here?
else: a == b == c
return 20
それはあなたが常にfalseとなります
(a == b and a != c) or (b == c and b != a) or (a == c and a!= b)
(== cを意味する
a == b and a != c or b == c and b != a or a == c and a!= b
を意味するかどうかちょっと不明ですa == b、つまりこれらの条件のすべてが偽であることを意味します)、またはt彼は次のようにも常にfalseです
a == b and (a != c or b == c) and (b != a or a == c) and a!= b
を(実際には、それはa == b && a != b
が含まれているため、それが自己反論だ)か、他のいくつかの変種を意味します。私はを強くにしようとしていることをより明確にするために、ここでは父親の使用をお勧めします。
また、最後の部分のために:上記の文は何の `リターン10 'ではありません
a != b and (a == c or b == c)
と同じことを意味して
a != b
とb != a
は、まったく同じことを意味しますあなたの機能。打ち間違え? –