2016-07-18 9 views
1

부울 표현식을 파이썬으로 작성하려고하지만 파이썬은 비트 연산으로 만 XOR 표현식을 처리 할 수 ​​있습니다.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

몇 가지 수정 사항을 사용하면이를 실제로 작성할 수 있습니다. 한 가지 아이디어는 바이너리 표현식을 사용하지 않으려면 세트 라이브러리를 사용하는 것입니다. – af3ld

답변

3

비트 단위 ^ 연산자 만 사용하십시오. ^ 함께 -ed 때 파이썬의 논리 값은 부울을 반환 :

>>> 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))