0

离开python有一段时间了,所以格式化技能不存在。希望转换这种格式的东西:

[[8, -6, -4], [-10, 4, 6], [6, -8, -9]] 

变成这样的东西:

(x8 v ~x6 v ~x4) ^ (~x10 v x4 v x6) ^ (x6 v ~x8 v ~x9)

然后能够将每个数字作为单独的输入引用,以更改为 T 或 F。任何指导都将不胜感激。

import random
def sample():
    nums = random.sample(range(-10, 10), 3)
    return nums

exlist = []
boundary = random.randint(3, 10)
count = 0
while (count < boundary):
    count = count + 1
    exlist.append(sample()) 
4

1 回答 1

1

请注意,在您的情况下, 0 案例似乎退化了,所以我假设您没有 0(否则它会变成 x0 还是 ~x0 ?)

假设您将 T / F 存储在这样的列表中:

 exvalues = [bool(random.randint(0,1)) for _ in range(10)]

那么您可以像这样简单地评估表达式(无需生成您所追求的符号表达式):

all(any(exvalues[x] if x>0 else not exvalues[-x] for x in y) for y in exlist)

说明:您采用and所有“子表达式”的全局,每个子表达式都是or元素的全局(可选not取决于符号)。

于 2017-06-15T00:40:41.823 回答