我正在使用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


结果显示,a0not bFalse1是真实的,而not是真实的False

a恰好与您想要的结果具有相同的值,这并不意味着它为您提供了作为元组的第一项所需的结果,而您只需要丢弃第二项!那相当于只写a

我想,您想做的是将您的条件写为a and not b

关于python - 需要在逻辑运算符'not'中禁用Sympy输出的'False'(0,False),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38416381/

10-15 23:31