将复杂条件分解为子条件

2024-10-03 06:28:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个充满复杂条件的文档解析为一个逻辑字典

eval()有帮助,但我遇到了一个问题,当它涉及到物质条件(->;)(Python中不支持)

我确信有一个现有的算法可以正确地打破这些条件,并以正确的逻辑方式计算出每个子条件(这就是我计划更改“A->;在发送到eval()之前,从“B”到“非(A)或B”)

我在搜索时找不到任何有用的东西,希望能有所发现

例如:

变量(代码):

x = True
y = False
m = True
z = False
c = 3

File.txt:

(x && y) || m
(x || m) && (y || z)
((x && y) -> m) || z 
(c in {3,5}) && z

期望输出:

dict = { '(x && y) || m': True, '(x || m) && (y || z)': False, etc.. }

Tags: 代码文档gttxt算法falsetrue字典
1条回答
网友
1楼 · 发布于 2024-10-03 06:28:14

我以前也做过类似的练习,下面是我要做的

第一件事是找出哪些操作不能通过eval解决。您提到了“->;”运算符,似乎还有大括号中的列表,而不是方括号中的列表 e、 g

c in {3,5}

对于“->;”运算符,则需要获取左操作数和右操作数,并将它们放入“not(A)| | B”中。问题在于A或B是否是括号内的表达式,可能是嵌套的。为此,您需要循环遍历左侧(对于A)和右侧(对于B)的每个字符,并存储表达式,直到找到相应的右括号。然后,您可以解决这些问题,然后在中替换它们

相关问题 更多 >