对符号执行布尔变量的布尔运算会产生TypeError
,但反过来没有问题:
>>> from sympy import *
>>> x = Symbol('x', bool=True)
>>> x ^ True
Not(x)
>>> True ^ x
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
True ^ x
TypeError: unsupported operand type(s) for ^: 'bool' and 'Symbol'
我可以试试接球:
^{pr2}$但是,对于我目前的任务,不可能用try-except
来实现这一点,因为我必须处理~200个符号。我怎样才能做到这一点?在
这是一个bug,它已经在SymPy的开发版本中修复了,并将在下一个版本中修复。如果您不能使用git版本并且迫不及待,一种解决方法是将
sympy.logic.boolalg.Boolean
中的monkeypatch__rxor__
(依此类推)等于sympy.logic.boolalg.Boolean.__xor__
。在顺便说一下,
Symbol('x', bool=True)
什么也不做。它将假设x.is_bool
添加到符号中,但由于这不是SymPy所知道的真实假设,所以它什么也做不了。在这很难看,但它应该做你想做的:
相关问题 更多 >
编程相关推荐