SymPy – 逻辑表达式
布尔函数被定义在 sympy.basic.booleanarg模块 中 。 我们可以用标准的python操作符& (And), | (Or), ~ (Not)以及>>和<<来建立布尔表达式。布尔表达式继承于SymPy核心模块中定义的Basic类。
BooleanTrue函数
这个函数相当于核心 Python 中的 True。它返回一个单子,可以通过S.true来检索。
>>> from sympy import *
>>> x=sympify(true)
>>> x, S.true
上述代码片断给出了以下输出结果 −
(True, True)
BooleanFalse函数
同样地,这个函数在Python中相当于布尔型的False,可以通过S.false访问
>>> from sympy import *
>>> x=sympify(false)
>>> x, S.false
上述代码片断给出了以下输出结果 −
(False, False)
And 函数
逻辑和函数评估其两个参数,如果其中一个是假的,则返回假。该函数模拟了&操作符。
>>> from sympy import *
>>> from sympy.logic.boolalg import And
>>> x,y=symbols('x y')
>>> x=True
>>> y=True
>>> And(x,y), x"&"y
上述代码片断给出了以下输出结果 −
(True, True)
>>> y=False
>>> And(x,y), x"&"y
上述代码片断给出了以下输出结果 −
(False, False)
Or 函数
这个函数评估两个布尔参数,如果其中一个为真,则返回真。|操作符方便地模拟了它的行为。
>>> from sympy import *
>>> from sympy.logic.boolalg import Or
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Or(x,y), x|y
上述代码片断给出了以下输出结果 −
(True, True)
>>> x=False
>>> y=False
>>> Or(x,y), x|y
上述代码片断给出了以下输出结果 −
(False, False)
Not 函数
逻辑Not函数的结果是对布尔参数进行否定。如果它的参数是假的,它返回真,如果是真,则返回假。~运算符执行的操作与Not函数类似。它在下面的例子中显示 –
>>> from sympy import *
>>> from sympy.logic.boolalg import Or, And, Not
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Not(x), Not(y)
上述代码片断给出了以下输出结果 −
(False, True)
>>> Not(And(x,y)), Not(Or(x,y))
上述代码片断给出了以下输出结果 −
(True, False)
XOR函数
逻辑XOR(排他性OR)函数,如果奇数的参数为真,其余为假,则返回真;如果偶数的参数为真,其余为假,则返回假。类似的操作是由^运算符执行的。
>>> from sympy import *
>>> from sympy.logic.boolalg import Xor
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Xor(x,y), x^y
上述代码片断给出了以下输出结果 −
(True, True)
>>> 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)
上述代码片断给出了以下输出 –
True
在上述情况下,三个(奇数)参数是 “真”,因此Xor返回 “真”。然而,如果True参数的数量是偶数,它的结果是False,如下图所示。
>>> a,b,c,d,e=(True, False, False, True, False)
>>> Xor(a,b,c,d,e)
上述代码片断给出了以下输出 –
False
Nand函数
这个函数执行逻辑NAND操作。它评估它的参数,如果其中任何一个参数是假的,则返回 “真”,如果它们都是 “真”,则返回 “假”。
>>> 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)
上述代码片断给出了以下输出结果 −
(True, False)
Nor函数
这个函数执行逻辑NOR操作。它评估其参数,如果其中任何一个参数为真,则返回假,如果全部为假,则返回真。
>>> 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)
上述代码片断给出了以下输出结果 −
(False, False)
请注意,尽管SymPy为Xor提供了^运算符,为Not提供了~,为Or提供了|,为And提供了&函数,但它们在Python中的正常使用是作为位操作符的。因此,如果操作数是整数,结果将是不同的。
等价函数
这个函数返回等价关系。Equivalent(A, B) 当且仅当 A 和 B 都是真或都是假时为真。如果所有的参数在逻辑上是等价的,该函数返回 True。否则返回假。
>>> 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)
上述代码片断给出了以下输出结果 −
(False, True)
ITE函数
这个函数就像编程语言中的If then else子句。ITE(A, B, C)评估并返回B的结果,如果A为真,则返回C的结果。
>>> 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)
上述代码片断给出了以下输出结果 −
(False, True)