2016-07-18 7 views
1

ブール式をPythonで記述しようとしていますが、Pythonではビット演算を行うXOR式しか使用できないようです。Pythonを使用したブール式の記述

この式をPythonでXOR演算子なしで記述するための最良の方法は何でしょうか。

(A^B^C^D) U ((B U C U D)' XOR A) 

編集:私はこれをしようとしました

if (A and B and C and D) or ((A and not (B or C or D)) or (not A and (B and C and D))): 

と私はそれを簡単にするために探しています。

+4

を持っているものあなたは試みましたか? – depperm

+0

[python wiki](https://wiki.python.org/moin/)を見てください。 [bitwise operators](https://wiki.python.org/moin/BitwiseOperators)には良いページがあります。 – pat

+0

いくつかの変更を加えると、これを実際に書くことができます。 1つのアイデアは、バイナリ式を使用したくない場合は、セットライブラリを使用することです。 – af3ld

答えて

3

ビット単位の^演算子を使用してください。 ^が一緒に-ed時にPythonのブール値はブール値を返します。

>>> True^True 
False 
>>> True^False 
True 

andor演算子は、短絡をサポートするために主に存在するが、XORは短絡することはできません。

>>> True != True 
False 
>>> True != False 
True 

が、それはより多くの引数を指定して連鎖したときに、あなたがやりたいことはありません:

ありも!=ます

>>> True != True != True 
False 
1

(A and B and C and D) or ((A and not (B or C or D)) or (not A and (B and C and D)))はこれに簡素化されます: (B and C and D) or (A and not (B or C or D))

関連する問題