SymPy - 逻辑表达式

布尔函数在 sympy.basic.booleanarg 模块 中定义。 可以使用标准 python 运算符 & (And), | (Or), ~ (Not) 以及 >> 和 << 构建布尔表达式。 布尔表达式继承自 SymPy 核心模块中定义的基本类。


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)


And 函数

逻辑 AND 函数计算它的两个参数,如果其中一个参数为 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)


Xor 函数

逻辑 XOR(异或)函数在奇数个参数为 True 其余为 False 时返回 True,如果偶数个参数为 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 函数

此函数执行逻辑或非运算。 它评估其参数并在其中任何一个为真时返回 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 中的正常使用是作为按位运算符。 因此,如果操作数是整数,结果就会不同。


Equivalent 函数

这个函数返回等价关系。 当且仅当 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 子句。如果 A 为真,则 ITE(A, B, C) 计算并返回 B 的结果,否则返回 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)