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
这可能吗?我想做的是这样的: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