2012-11-15 62 views
0

我得到了一些现成的代码和一个输入和预期输出现在我需要找到一个方法来计算从输入要求计算逻辑矩阵P = MN

输出。这是我的代码被赋予

3 2 4 

T T 
F F 
T T 

F F F F 
T T T T 

and i have been asked to calculate the logical matrix P=mn 

解决

回答

1
for i in range(len(M)): 
    for j in range(len(N[0])): 
     for k in range(len(N)): 
      P[i][j] += M[i][k] * N[k][j] 

这是包含整数矩阵的基本模式。 您必须执行2个步骤: 1)启动P矩阵 2)使用'T'和'F'值而不是整数操作。

大概完成步骤2的最简单方法是使用eval函数:

T = 1 # eval('T') will be 1 
F = 0 # eval('F') will be 0 

并更改行:

P[i][j] += eval(M[i][k]) * eval(N[k][j]) 

但你仍然需要将值从P到转换“ T'或'F'值。希望这可以帮助。

M = [['T', 'T'], ['F', 'F'], ['T', 'T']]    #sample values 
N = [['F', 'F', 'F', 'F'], ['T', 'T', 'T', 'T']] 

T = 1 
F = 0 

P = [] 

for i in range(len(M)):        #result matrix creation 
    P.append([None] * len(N[0])) 

for i in range(len(M)): 
    for j in range(len(N[0])): 
     P[i][j] = 0         #initialization 
     for k in range(len(N)): 
      P[i][j] |= eval(M[i][k]) & eval(N[k][j]) #logical operators 
     P[i][j] = 'T' if P[i][j] else 'F'   #conversion back to 'T' and 'F' 

print P 

这将产生输出:

[['T', 'T', 'T', 'T'], ['F', 'F', 'F', 'F'], ['T', 'T', 'T', 'T']] 
+0

我相信它,但即时得到一个错误“int类型的对象没有LEN()” –

+0

我更新了答案,包括了所有你需要的。如果您在示例中将矩阵带到表单中,则不应该出现任何错误。另请注意,我如何使用逻辑运算符(|和&),而不是算术运算符。 – kaspersky

+0

非常感谢你是男性的神 –