-2

andifを使用するステートメントがある場合、次のようなことができますか?andor

if (a=0 or x=2) and y=1:

または、自分自身を繰り返して実行する必要がありますか:

if a=0 and y=1 or x=2 and y=2:
4

2 に答える 2

1

ブール代数は、典型的な代数の多くの特性を示します。and以上の分配性は単調法則orの 1 つであり、次のように述べられています。

x∧(y∨z)     =   (x∧y)∨(x∧z)

あなたの場合:

(y == 2) and ((a==0) or (x==2)) = ((y==2) and (a==0)) or ((y==2) and (x==2))
   x      ∧  (  y    ∨     z  )   (    x    ∧    y  ) ∨  (  x     ∧    z)
于 2013-09-17T01:40:09.470 に答える
1

どちらも問題なく動作します (まあ、2 番目のバージョンの最後にバグを修正した後)。しかし、それは比較が書かれた方法ではないことに注意してください! これを行う:

if (a == 0 or x == 2) and y == 1:

または同等:

if (a == 0 and y == 1) or (x == 2 and y == 1): # NOT y == 2 as you wrote

が等値演算子であることに注意してください。つまり==、単一の=手段の代入です。

于 2013-09-17T01:34:55.183 に答える