我正在使用Sympy处理随机生成的表达式,其中可能包含布尔运算符“和”,“或”和“不”。
“和”和“或”效果很好:
a = 0
b = 1
a和b
0
a或b
1个
但是,“ not”除了期望值之外还引入了第二个术语“ False”:
a,不是b
(0,错)
当由Sympy处理时(其中“数据”(下)提供了现实世界的值来代替变量a和b):
algo_raw ='a,而不是b'
algo_sym = sympy.sympify(algo_raw)
algo_sym.subs(数据)
它扼杀“假”。
我需要禁用第二项“ False”,以便仅获得所需的输出“ 0”。
最佳答案
a, not b
不会执行您认为的操作。您实际上正在请求并正确接收包含以下内容的两个元组:a
not b
结果显示,a
是0
,not b
是False
,1
是真实的,而not
是真实的False
。a
恰好与您想要的结果具有相同的值,这并不意味着它为您提供了作为元组的第一项所需的结果,而您只需要丢弃第二项!那相当于只写a
。
我想,您想做的是将您的条件写为a and not b
。
关于python - 需要在逻辑运算符'not'中禁用Sympy输出的'False'(0,False),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38416381/