2017-02-13 52 views
0

我正在学习Python中,你可以请帮助我这个代码 为伽罗瓦域XOR 代码错误“廉政”对象不是标化的蟒蛇

def generateGF(a,b): 
    for x in range(a**b-1): 
     for y in range(a**b-1): 
      a[x][y] = bin(x)[2:].zfill(3) + bin(y)[2:].zfill(3) # limited for 2^3 
    for i in range(a**b): 
     for j in range(a**b): 
      print(bin(z[i][j]),end=' ') 
     print("\n") 
print (generateGF(2,3)) 

,我收到此错误

python lab5.py        :(
Traceback (most recent call last): 
    File "lab5.py", line 9, in <module> 
    print (generateGF(2,3)) 
    File "lab5.py", line 4, in generateGF 
    a[x][y] = bin(x)[2:].zfill(3) + bin(y)[2:].zfill(3) # limited for 2^3 
TypeError: 'int' object is not subscriptable 
+1

'了'是整数'2',所以你期望'a [x] [y]'是什么意思? – Barmar

+1

当你得到这样的错误时,拆分子表达式,以便得到更准确的消息。 –

+0

在你的第二个循环中你有'z [i] [j]'。变量'z'在哪里定义? – Barmar

回答

0

问题是你在一行中有太多的表达式,所以很难确定哪个整数正在被下标。

分手了表述:

a[x][y] = bin(x)[2:].zfill(3) + bin(y)[2:].zfill(3) 

是一样的:

filled_x = bin(x)[2:].zfill(3) 
filled_y = bin(y)[2:].zfill(3) 

a[x][y] = filled_x + filled_y 

然后你就会知道哪些标导致错误。

(实际上,在技术上你可以需要拆分a[x][y]为好,但是从你的测试数据我们可以看到a是2,所以这是造成问题)

+0

你能解释为什么2导致问题 –

+0

'2'是一个整数,没有子数据可以访问。 '2 [x]'没有意义。 –