[英]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 。a
, f返回False 。b and c
, f返回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 中设置了d
和e
,第二个参数为空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.