如何在python中使用非逻辑运算

如何在python中使用非逻辑运算,python,Python,输入一个逻辑表达式作为字符串并计算,我得到了正确的输出 str1 = "(1|0)&(1|1&(0|1))" print eval(str1) o/p: 1 但是同样的方法,如果我把not操作符包含为~,输出会出错 str1 = "(~0|~1)&(~1|0)" print eval(str1) o/p: -2 这里是否有其他表示not运算符的方法来获得正确答案。&,|和~都是位运算符 对于逻辑运算符,使用和,或和而不是 如果您打算执行逻辑运算,请使用适当的布尔值:

输入一个逻辑表达式作为字符串并计算,我得到了正确的输出

str1 = "(1|0)&(1|1&(0|1))"
print eval(str1)
o/p: 1
但是同样的方法,如果我把not操作符包含为~,输出会出错

str1 = "(~0|~1)&(~1|0)"
print eval(str1)
o/p: -2

这里是否有其他表示not运算符的方法来获得正确答案。

&
|
~
都是位运算符

对于逻辑运算符,使用
而不是

如果您打算执行逻辑运算,请使用适当的布尔值:

True
/
False

str1 = "(not 0|not 1) and (not 1|0)"
print eval(str1)
在python中,NOT是
NOT


Ref:

这些不是逻辑表达式,而是按位表达式。这就是为什么
~0==-1
。相反,您可以寻找一个解析器,按照您想要的方式解析这些表达式。一个快速的谷歌搜索出现了。 Sympy似乎实现了类似的功能:

Symphy的逻辑模块允许使用符号和布尔值形成和操作逻辑表达式


python中的逻辑not是
not
~
不是按位的。另外,为什么要
求值?不需要证明这个问题。