2017-02-13 50 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]'沒有意義。 –