符号上布尔变量的布尔运算产生 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'
我可以尝试 grab :
try :
print True ^ x
except TypeError:
print x ^ True
Not(x)
但是,对于我目前的任务,不可能用 try-except
来实现它,因为我必须处理~200个符号 . 我怎样才能做到这一点?
2 回答
这是一个错误,它已在SymPy的开发版本中修复,并将在下一版本中修复 . 如果你可以等待,一个解决方法是将
sympy.logic.boolalg.Boolean
中的monkeypatch__rxor__
(依此类推)等于sympy.logic.boolalg.Boolean.__xor__
.顺便说一句,
Symbol('x', bool=True)
什么也没做 . 它将符号x.is_bool
添加到符号中,但由于这不是't a real assumption that SymPy knows about, it doesn' t .这很难看,但它应该做你想要的: