Sympy:在关系上使用逻辑运算符

Sympy: Using logical operators on relationals

这可能吗?我想做的是这样的:sympify('2>1 | 2<1')

我几乎只需要 'or' 和 'and'。我也试过 sympify('2>1') | sympify('2<1')。理想情况下,我希望能够将带有关系和逻辑运算符的字符串发送到一个函数,并让它 return 为真或假。 (即 '(2>1 | 2<1) & 3==3'

问题是 Python/SymPy 中的 operator precedence:您需要用括号将不等式括起来,否则首先计算 1 | 2 并且 SymPy 会引发错误。你可以这样写:

>>> sympify('(2>1) | (2<1)')
True # SymPy bool

当然,对于仅涉及 &| 的逻辑表达式,您并不真的需要 SymPy 的强大功能。 Python 的 bool 类型支持运算符,但您仍然需要括号以确保正确的结果:

>>> (2>1) | (2<1)
True # Python bool