如何在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
~
不是按位的。另外,为什么要求值?不需要证明这个问题。