SymPy - 逻辑表达式

  • 简述

    布尔函数定义在sympy.basic.booleanarg module. 可以使用标准 python 运算符 & (And)、| (Or), ~ (Not) 构建布尔表达式以及 >> 和 <<。布尔表达式继承自 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)

  • 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))
    
    
    上面的代码片段给出了以下输出 -

    (TrueFalse)

  • 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)
    
    
    上面的代码片段给出了以下输出 -

    错误的

  • 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 函数

    该函数执行逻辑或非运算。它评估它的参数,如果其中任何一个为 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 中的正常使用是按位运算符。因此,如果操作数是整数,结果会有所不同。
  • 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 为True,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)