SymPy 逻辑表达式
布尔函数在 sympy.basic.booleanarg 模块中定义 。可以使用标准的Python运算符 &(与)、|(或)、~(非)以及 >> 和 << 构建布尔表达式。布尔表达式继承自 SymPy 核心模块中定义的 Basic 类。
BooleanTrue 函数
此函数相当于 Python 核心中的 True。它返回一个可以通过 S.true 获取的单例。
>>> from sympy import *
>>> x=sympify(true)
>>> x, S.true
上述代码片段给出了以下输出−
(True, True)
BooleanFalse 函数
类似地,该函数相当于 Python 中的 Boolean False,并可以通过 S.false 来访问
>>> from sympy import *
>>> x=sympify(false)
>>> x, S.false
以上代码段给出如下输出 –
(False, False)
与操作
逻辑与函数对其两个参数进行评估,如果其中任何一个为False,则返回False。该函数模拟了&操作符。
>>> 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函数
该函数评估两个布尔参数,并在其中一个为True时返回True。| 操作符方便地模拟了它的行为。
>>> 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 函数
逻辑非函数的结果是布尔参数的否定。如果参数为False,则返回True,如果为True,则返回False。~ 运算符执行与 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)
异或函数
逻辑异或(exclusive OR)函数返回True,如果奇数个参数为True并且其他参数为False,则返回False,如果偶数个参数为True并且其他参数为False,则返回False。相似的操作由^运算符执行。
>>> 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
在上面的情况下,有三个(奇数个)参数为True,因此Xor返回True。然而,如果True参数的个数是偶数,则结果为False,如下所示:
>>> a,b,c,d,e=(True, False, False, True, False)
>>> Xor(a,b,c,d,e)
上面的代码片段给出了以下输出 –
False
Nand函数
该函数执行逻辑NAND运算。它评估它的参数并在它们中有任何一个为False时返回True,如果它们都为True则返回False。
>>> 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操作。它评估其参数,并且如果其中任何一个为True,则返回False;如果它们都为False,则返回True。
>>> 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中的正常使用是作为位运算符。因此,如果操作数是整数,结果会不同。
等效的函数
此函数返回等价关系。当且仅当A和B都为True或都为False时,Equivalent(A, B)为True。如果所有的参数在逻辑上等价,则函数返回True。否则返回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)
上面的代码片段输出如下:
(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)