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 -