SymPy – 逻辑表达式

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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程