繁体   English   中英

python 将字符串转换为逻辑门 function

[英]python convert a string to a logic gate function

我有一个 python 字符串,例如: "(a and b and c) or (d and e)" ,其中 a, b, c, d 和 e 是某种条件。 正如您可能看到的,这实际上是一个逻辑表达式。

我想以某种方式将其转换为类似逻辑门的 function,例如f 所以我会将一些真实条件传递给f ,并得到逻辑结果。 例子:

  • 如果我通过它(d and e) (即 d 和 c 为真), f返回True
  • 如果我通过它(a and b and c)f返回True
  • 如果我只通过af返回False
  • 如果我只通过b and cf返回False

我不知道如何解决这样的问题。 strtobool不能完全满足我的要求,我什至不确定如何将给定的字符串转换为 function。 至于将真实条件作为输入传递给它,我正在考虑传递一个True布尔值列表,即默认情况下所有条件都是False 例如从上面的第一个例子:

d = True; e = True
f([d, e])
> True

d = True; e = False
f([d])
> False

您正在寻找eval

本质上,您可以-

eval('d and e', {'d': True, 'e': False})

它传递d and e字符串进行评估,还传递一些全局变量来设置这些变量的值。

但是,通常最好使用第三个参数 locals 而不是 globals。

eval('d and e', {}, {'d': True, 'e': False})

这将实现相同的效果,除了在本地 scope 中设置了de ,第二个参数为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM