【发布时间】:2013-10-31 09:57:14
【问题描述】:
布尔变量对符号的布尔运算产生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'
我可以尝试捕捉:
try :
print True ^ x
except TypeError:
print x ^ True
Not(x)
但是,对于我目前的任务,不可能用try-except 来实现它,因为我必须处理大约 200 个符号。我怎样才能做到这一点?
【问题讨论】:
-
如果你要处理200个符号;我希望你正在使用循环。如果是,为什么不能使用 try-except 块?
-
@plg 我正在使用
numpy.array、S,符号和布尔值任意混合。我的操作如下:S[15] ^ (S[19] & S[72]) ^ S[112]。现在,在不知道哪个是布尔值和哪个是符号的情况下,我不能做 try-except 的事情,因为这样的 try-except 块的数量会呈指数级增长。 -
要使用循环,您可以定义一个元组列表:
[(15, 19, 73, 112), ...]如果它不总是相同的操作,这将不起作用。您还可以在 try-except 中使用表达式列表['S[15] ^ (S[19] & S[72]) ^ S[112]', ...]和eval。除非我没有其他解决方案,否则我不会这样做。 -
@plg 仍然不清楚。你能给我一个MWE吗?
-
作为未来参考,什么是 MWE?
标签: python boolean sympy symbolic-math