我对蟒蛇很陌生,我正在用它做作业。
我在Debian 8上使用PyEDA和Python3。
我创建了一个名为:
R = exprvars('r', n, n)对于n = 4,这给了我:
farray([[r[0,0], r[0,1], r[0,2], r[0,3]],
[r[1,0], r[1,1], r[1,2], r[1,3]],
[r[2,0], r[2,1], r[2,2], r[2,3]],
[r[3,0], r[3,1], r[3,2], r[3,3]]])然后,在一些逻辑之后,使用以下方法创建一个CNF布尔函数f和一个BDD:
f = expr2bdd(f)然后,这个短语:
U = f.satisfy_one()给我:
{r[2,1]: 0, r[3,2]: 1, r[1,1]: 1, r[0,2]: 0, r[0,3]: 1, r[2,2]: 0, r[2,3]: 0, r[3,3]: 0, r[3,1]: 0, r[1,2]: 0, r[0,1]: 0, r[1,0]: 0, r[2,0]: 1, r[3,0]: 0, r[0,0]: 0, r[1,3]: 0}但我不明白的是:我期待着
U[R[0,0]]返回0,但相反,它给了我
KeyError: r[0,0]有什么问题吗?R[0,0]给了我r[0,0],字典把它作为密钥。
编辑
当我说R[0,0]给我r[0,0]时,这意味着我使用pdb打印它,在U = f.satisfy_one()后面放置一个断点
(Pdb) p R[0,0]
r[0,0]发布于 2015-10-17 01:12:47
这需要更多的细节。
你怎么说,R[0,0]给了我r[0,0]?你打印出来了吗?
试着验证你是否在寻找相同的
assert list(U.keys())[0] == R[2,1]看看这些值
print(list(type(U.keys())[0])
print(type(R[2,1])看看它们是否匹配,只有它们匹配,你才能收集它。
另外,检查U本身是否有任何方法为您执行查询。
https://stackoverflow.com/questions/33181475
复制相似问题