输入逻辑表达式作为字符串并进行评估,我得到正确的输出
str1 = "(1|0)&(1|1&(0|1))"
print eval(str1)
o/p: 1
但同样地,如果我不包括运算符〜,则输出错误。
str1 = "(~0|~1)&(~1|0)"
print eval(str1)
o/p: -2
有没有其他方法可以代表非操作员来获得正确答案。
答案 0 :(得分:1)
这些不是逻辑表达式,而是按位表达式。这就是~0 == -1
的原因。相反,您可以查找以您希望的方式解析这些表达式的解析器。快速谷歌搜索显示this stackoverflow question。
Sympy似乎实现了类似的事情:sympy logic
SymPy的逻辑模块允许使用符号和布尔值来形成和操作逻辑表达式
答案 1 :(得分:0)
&
,|
和~
是按位运算符。
对于逻辑运营商,请使用and
,or
和not
。
如果您打算进行逻辑操作,请选择使用适当的布尔值:
True
/ False
答案 2 :(得分:0)
str1 = "(not 0|not 1) and (not 1|0)"
print eval(str1)
在python中,NOT是not