SymPy - wyrażenia logiczne

Funkcje boolowskie są zdefiniowane w sympy.basic.booleanarg module. Możliwe jest budowanie wyrażeń boolowskich za pomocą standardowych operatorów Pythona & (And), | (Lub), ~ (Nie), a także z >> i <<. Wyrażenia logiczne dziedziczą z klasy Basic zdefiniowanej w podstawowym module SymPy.

Funkcja BooleanTrue

Ta funkcja jest odpowiednikiem True, tak jak w rdzeniu Pythona. Zwraca singleton, który może pobrać S.true.

>>> from sympy import * 
>>> x=sympify(true) 
>>> x, S.true

Powyższy fragment kodu daje następujące dane wyjściowe -

(Prawda, prawda)

Funkcja BooleanFalse

Podobnie, ta funkcja jest odpowiednikiem Boolean False w Pythonie i może być dostępna przez S.false

>>> from sympy import * 
>>> x=sympify(false) 
>>> x, S.false

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz, Fałsz)

I funkcjonować

Funkcja logiczna AND oblicza swoje dwa argumenty i zwraca False, jeśli którykolwiek z nich jest False. Funkcja emuluje & operator.

>>> from sympy import * 
>>> from sympy.logic.boolalg import And 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=True 
>>> And(x,y), x"&"y

Powyższy fragment kodu daje następujące dane wyjściowe -

(Prawda, prawda)

>>> y=False 
>>> And(x,y), x"&"y

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz, Fałsz)

Albo funkcjonować

Ta funkcja oblicza dwa argumenty logiczne i zwraca True, jeśli którykolwiek z nich ma wartość True. | operator wygodnie naśladuje jego zachowanie.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Or(x,y), x|y

Powyższy fragment kodu daje następujące dane wyjściowe -

(Prawda, prawda)

>>> x=False 
>>> y=False 
>>> Or(x,y), x|y

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz, Fałsz)

Nie działa

Funkcja Logical Not powoduje negację argumentu boolowskiego. Zwraca True, jeśli jego argument jest False i zwraca False, jeśli True. Operator ~ wykonuje operację podobną do funkcji Not. Pokazuje to poniższy przykład -

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or, And, Not 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Not(x), Not(y)

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz PRAWDA)

>>> Not(And(x,y)), Not(Or(x,y))

Powyższy fragment kodu daje następujące dane wyjściowe -

(Prawda fałsz)

Funkcja Xor

Funkcja Logical XOR (wyłączne OR) zwraca wartość True, jeśli nieparzysta liczba argumentów to True, a reszta to False, i zwraca False, jeśli parzysta liczba argumentów to True, a reszta to False. Podobną operację wykonuje operator ^.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Xor 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False

>>> Xor(x,y), x^y

Powyższy fragment kodu daje następujące dane wyjściowe -

(Prawda, prawda)

>>> a,b,c,d,e=symbols('a b c d e') 
>>> a,b,c,d,e=(True, False, True, True, False) 
>>> Xor(a,b,c,d,e)

Powyższy fragment kodu daje następujące dane wyjściowe -

Prawdziwe

W powyższym przypadku trzy (nieparzyste) argumenty to True, stąd Xor zwraca prawdę. Jeśli jednak liczba argumentów True jest parzysta, skutkuje to False, jak pokazano poniżej -

>>> a,b,c,d,e=(True, False, False, True, False) 
>>> Xor(a,b,c,d,e)

Powyższy fragment kodu daje następujące dane wyjściowe -

Fałszywy

Funkcja Nand

Ta funkcja wykonuje operację logiczną NAND. Ocenia swoje argumenty i zwraca True, jeśli którykolwiek z nich jest False, i False, jeśli wszystkie są True.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Nand 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Nand(a,b,c), Nand(a,c)

Powyższy fragment kodu daje następujące dane wyjściowe -

(Prawda fałsz)

Ani funkcja

Ta funkcja wykonuje operację logiczną NOR. Ocenia swoje argumenty i zwraca False, jeśli którykolwiek z nich ma wartość True, i True, jeśli wszystkie są False.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Nor 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Nor(a,b,c), Nor(a,c)

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz, Fałsz)

Zauważ, że chociaż SymPy zapewnia operator ^ dla Xor, ~ dla Not, | dla funkcji Or i & dla I jako wygoda, ich normalne użycie w Pythonie to operatory bitowe. Stąd, jeśli operandy są liczbami całkowitymi, wyniki byłyby inne.

Funkcja równoważna

Ta funkcja zwraca relację równoważności. Ekwiwalent (A, B) jest Prawdą wtedy i tylko wtedy, gdy A i B są zarówno Prawdą, jak i Fałszem. Funkcja zwraca True, jeśli wszystkie argumenty są logicznie równoważne. W przeciwnym razie zwraca wartość False.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Equivalent 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Equivalent(a,b), Equivalent(a,c)

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz PRAWDA)

Funkcja ITE

Ta funkcja działa jak klauzula If then else w języku programowania .ITE (A, B, C) oblicza i zwraca wynik B, jeśli A jest prawdziwe, w przeciwnym razie zwraca wynik C. Wszystkie argumenty muszą być wartościami logicznymi.

>>> from sympy import * >>> from sympy.logic.boolalg import ITE >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) 
>>> ITE(a,b,c), ITE(a,c,b)

Powyższy fragment kodu daje następujące dane wyjściowe -

(Fałsz PRAWDA)