📜  SymPy-逻辑表达式

📅  最后修改于: 2020-11-05 04:42:21             🧑  作者: Mango


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

BooleanTrue函数

此函数与Python核心中的True等效。它返回一个可以由S.true检索的单例。

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

上面的代码片段给出了以下输出-

(对,对)

BooleanFalse函数

同样,此函数等效于Python的Boolean False,可以由S.false访问。

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

上面的代码片段给出了以下输出-

(错误,错误)

和函数

逻辑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

上面的代码片段给出了以下输出-

(对,对)

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

上面的代码片段给出了以下输出-

(错误,错误)

或函数

此函数计算两个布尔参数,如果两个布尔参数均为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

上面的代码片段给出了以下输出-

(对,对)

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

上面的代码片段给出了以下输出-

(错误,错误)

不起作用

逻辑非函数导致布尔参数取反。如果其参数为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)

上面的代码片段给出了以下输出-

(错误,正确)

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

上面的代码片段给出了以下输出-

(真假)

异或函数

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

上面的代码片段给出了以下输出-

(对,对)

>>> 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。但是,如果True参数的数量为偶数,则结果为False,如下所示-

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

上面的代码片段给出了以下输出-

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,如果所有均为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)

上面的代码片段给出了以下输出-

(错误,错误)

请注意,即使SymPy为Xor提供^运算符,为Not提供〜, for Or和&&for 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)

上面的代码片段给出了以下输出-

(错误,正确)

ITE函数

此函数充当编程语言中的If then else子句。如果A为true,则ITE(A,B,C)求值并返回B的结果,否则返回C的结果。所有args必须为布尔值。

>>> 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)

上面的代码片段给出了以下输出-

(错误,正确)