2017-02-13 8 views
0

я учусь питона пожалуйста, вы можете помочь мне с этим кодом на поле Галуа исключающего кодошибка «INT» объект не subscriptable питон

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

'a' является целым числом' 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]' не имеет смысла. –