首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用包含布尔表达式的字符串创建PyEDA布尔表达式?

如何使用包含布尔表达式的字符串创建PyEDA布尔表达式?
EN

Stack Overflow用户
提问于 2020-07-02 06:53:14
回答 1查看 327关注 0票数 0

我正在从前端获得一个( (A & B) | (C & ~D) )形式的布尔表达式。我需要把它转换成一个布尔表达式,这个表达式可以通过PyEDA来解决。要在PyEDA中编写布尔表达式,需要执行两个步骤。

  1. 使用A,B,C,D = map(exprvar, "abcd") - This becomes a problem when number of boolean variables are dynamicA = exprvars("a", 4) - solves the dynamic variable issue but need to convert letters in the equation to A[0],A[1]...创建布尔变量A、B、C、D。
  2. 将表达式编写为( (A & B) | (C & ~D) )

试验了以下方法。boolean_exp表示布尔表达式字符串,num_variables表示字符串中的变量数。

代码语言:javascript
代码运行次数:0
运行
复制
def parse_boolean_expression(boolean_exp,num_variables):
    count = 0
    boolean_exp_list = list(boolean_exp)
    for index,char in enumerate(boolean_exp_list):
        if char.isalpha():
            boolean_exp_list[index] = "Z[{}]".format(count)
            count += 1
    final_bool_exp = "".join(boolean_exp_list)

    Z = exprvars("z", num_variables)
    expression = final_bool_exp

此方法不起作用,因为创建的表达式和变量是字符串类型,而正确的类型应该是表达式的<class 'pyeda.boolalg.expr.OrOp'>和变量的<class 'pyeda.boolalg.expr.variables'>

在交互模式中,我们可以很容易地完成上述步骤,但是如何使用包含从前端发送的动态变量的布尔表达式字符串在脚本模式下构建这个表达式呢?

EN

回答 1

Stack Overflow用户

发布于 2021-01-21 20:46:31

pyEDA有一个将文本转换为表达式的expr()函数。下面是它在您的示例中的工作方式。

代码语言:javascript
代码运行次数:0
运行
复制
>>> f = expr('( (A & B) | (C & ~D) )')

>>> f
Or(And(C, ~D), And(A, B))

>>> type(f)
<class 'pyeda.boolalg.expr.OrOp'>

这是一个链接到更多的信息。

文本到表达式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62690584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档