Sympy中的逻辑表达式有哪些

Sympy中的逻辑表达式有哪些

SymPy是一个符号数学Python包。它的目标是发展成为一个完全有特色的计算机代数系统,同时尽可能地保持代码的基本性,使其可以理解和扩展。该软件包完全由Python语言编写。sympy中的逻辑表达式是用布尔函数来表达的。sympy.basic.booleanarg模块包含布尔函数。

常见的Python操作符& (And), | (Or), 和~ (Not)可以用来创建布尔表达式。>>和也可以用来创建含义。其他布尔运算或门是NAND、NOR、XOR等。

Boolean True:

sympy.logic.boolalg.BooleanTrue

SymPy中的布尔值True是一个单子,可以用S.true来访问,也可以直接导入True或者从sympy包中导入symplify。

# import packages
from sympy import true
from sympy import S, sympify
  
# prints True
print(true)
  
# prints True
print(S.true)
  
# prints true
print(sympify(true))

输出:

True
True
True

Boolean False:

sympy.logic.boolalg.BooleanFalse

SymPy中的布尔值false是一个单子,可以用S.false来访问,也可以直接导入false或者从sympy包中导入symplify。

# import packages
from sympy import false
from sympy import S, sympify
  
# prints False
print(false)
  
# prints False
print(S.false)
  
# prints False
print(sympify(false))

输出:

False
False
False

真的否定为假,假的否定为真。

# import packages
from sympy import false, true
  
print(~true,~false)

输出:

False True

Boolean And:

sympy.logic.boolalg.And

它依次分析它的每个参数,如果所有的参数都是真的,则返回真。如果至少有一个参数是假的,则返回假。

  • true &true = true
  • true&false = false
  • false & true = false
  • false&false = false
# import packages
from sympy.abc import x, y
from sympy.logic.boolalg import And
  
res = x & y
print(res)
  
# 1&y ==y
print(And(x, y).subs(x, 1))
  
# 0&y ==0 or False
print(And(x, y).subs(x, 0))
  
# True&False == False
print(And(True, False))
  
# True & True == True
print(And(True, True))
  
# False & False == False
print(And(False, False))
  
# False & True == False
print(And(False, True))

输出 :

x & y
y
False
False
True
False
False

Boolean Or:

sympy.logic.boolalg.Or

如果任何一个参数为真,则返回真,否则返回假。

  • true |true = true
  • true|false = true
  • false | true = true
  • false|false = false
# import packages
from sympy.abc import x, y
from sympy.logic.boolalg import Or
  
res = x | y
print(res)
  
# 1&y == 1 or True
print(Or(x, y).subs(x, 1))
  
# 0|y ==y
print(Or(x, y).subs(x, 0))
  
# True | False == True
print(Or(True, False))
  
# True | True == True
print(Or(True, True))
  
# False | False == False
print(Or(False, False))
  
# False | True == True
print(Or(False, True))

输出:

x | y
True
y
True
True
False
True

Boolean Not:

sympy.logic.boolalg.Not(arg)

不是代表否定。如果断言是假的,该方法返回真。如果断言是真的,则返回False。

# import packages
from sympy.abc import x
from sympy.logic.boolalg import Not
  
# nor formula
print(Not(x))
  
# ~True == True
print(Not(True))
  
# ~False == False
print(Not(False))

输出:

~x
False
True

Boolean Nor:

sympy.logic.boolalg.Nor(*args)

Nor是Not和Or的连词。Nor=Not+Or。它依次检查每个参数,如果其中任何一个参数为真,则返回假,如果所有参数为假,则返回真。如果任何一个参数为真,则返回假。如果所有的参数都是假的,这个函数返回真。

# import packages
from sympy.abc import x, y
from sympy.logic.boolalg import Nor
  
nor_formula = ~(x | y)
print(nor_formula)
print(Nor(x, y))
  
# ~( True | False) == False
print(Nor(True, False))
  
# ~(True | True) == False
print(Nor(True, True))
  
# ~(False | False) == True
print(Nor(False, False))
  
# ~(False | True) == False
print(Nor(False, True))

输出:

~(x | y)
~(x | y)
False
False
True
False

Boolean Nand:

sympy.logic.boolalg.Nand(*args)

Nand是Not和的连接。它依次分析每一个输入,如果其中任何一个是假的,则返回 “真”,如果所有的都是 “真”,则返回 “假”。如果任何一个输入是假的,这个函数返回真。如果所有参数都是True,则返回False。

# import packages
from sympy.abc import x, y
from sympy.logic.boolalg import Nand
  
# not + nand == nand
nor_formula = ~(x & y)
print(nor_formula)
print(Nand(x, y))
  
# ~( True & False) == True
print(Nand(True, False))
  
# ~(True & True) == False
print(Nand(True, True))
  
# ~(False & False) == True
print(Nand(False, False))
  
# ~(False & True) == True
print(Nand(False, True))

输出:

~(x & y)
~(x & y)
True
False
True
True

Boolean Xor:

sympy.logic.boolalg.Xor(*args)

Xor表示逻辑XOR或Exclusive Or函数。如果奇数的参数是 “真”,其他参数是 “假”,该函数返回 “真”。如果偶数个参数为真,其他参数为假,则结果为假。

# import packages
from sympy.abc import x, y
from sympy.logic.boolalg import Xor
  
xor_formula = x ^ y
print(xor_formula)
print(Xor(x, y))
  
#  True ^ False == True
print(Xor(True, False))
  
# True ^ True == False
print(Xor(True, True))
  
# False ^ False == False
print(Xor(False, False))
  
# False ^ True == True
print(Xor(False, True))

输出:

x ^ y
x ^ y
True
False
False
True

Boolean Implies:

sympy.logic.boolalg.Implies(*args)

Implies指的是逻辑含义。x implies y等同于!x v y。接受x和y作为布尔输入。如果x是True,y是False,则返回False。否则,返回True。

from sympy.abc import x, y
from sympy.logic.boolalg import Implies
  
# !A v B == implies formula
# 返回 false when A is true and B is 
# false, rest all cases 返回 True
print(Implies(x, y))
  
# false
print(Implies(True, False))
  
# true
print(Implies(True, True))
  
# true
print(Implies(False, False))
  
# true
print(Implies(False, True))
print(x << y)
print(x >> y)

输出:

Implies(x, y)
False
True
True
True
Implies(y, x)
Implies(x, y)

Boolean Equivalent

sympy.logic.boolalg.Equivalent(*args)

指的是等价关系。如果x和y都是真或假,Equivalent(x, y)就是真。如果所有的参数在逻辑上是等价的,则返回True。否则,返回False。

from sympy.abc import x, y, z
from sympy.logic.boolalg import Equivalent, And, Or
  
print(Equivalent(x, y, z))
  
# true != false so it 返回 false
print(Equivalent(True, False))
  
# True == True  so it 返回 true
print(Equivalent(True, True))
  
# False == False so it 返回 true
print(Equivalent(False, False))
  
# False !=True so it 返回 false
print(Equivalent(False, True))
  
# true ==true == true so it 返回 true
print(Equivalent(True, Or(True, False), And(True, True)))

输出:

Equivalent(x, y, z)
False
True
True
False
True

Boolean ITE:

sympy.logic.boolalg.ITE(*args)

ITE指的是If then else子句。如果A为真,ITE(x, y, z)评估并返回y的结果;否则,ITE(x, y, z)评估并返回z的结果。 所有的参数必须是布尔值。

from sympy.abc import x, y, z
from sympy.logic.boolalg import ITE, Nor, Nand, Xor, Or, And
  
# ITE == if then else
print(ITE(x, y, z))
  
# x is true so y is returned
print(ITE(True, Or(True, False), And(True, True)))
  
# x is false so z is returned
print(ITE(Nor(True, False), Xor(True, False), Nand(True, True)))

输出:

ITE(x, y, z)
True
False

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程