J'ai écrit un script pour faire pivoter une matrice de 90 degrés dans le sens des aiguilles d'une montre. J'ai figuré sur l'algorithme mais bloqué sur la mise en œuvre.Pourquoi mon script soulève TypeError: l'objet 'int' n'est pas indicable
def rotate(M):
#Let M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = len(M)
temp = None
for i in range(0, n):
for j in range(i, n):
temp = M[i][j]
M[i][j] = M[j][i]
M[j][i] = temp
nby2 = int(n/2)
#error loop
for j in range(0, nby2):
for i in range(0, n):
temp = M[i][j]
M[i][j] = M[i][n - 1 - j]
M[i][n - 1 -j] = temp
#print(M[i][j], M[i][n - 1 - j])
for i in M:
print(i)
ligne temp = M[i][j]
soulève TypeError: 'int' object is not subscriptable
bien que la déclaration d'impression renvoie l'élément de la matrice sans l'erreur dans la boucle d'erreur et la boucle au-dessus fonctionne parfaitement bien.
Quelque chose que vous pensez être une 'liste' est vraiment un' int'. – deceze
'M [n - 1 -j] = temp' affecte directement un entier à' M'. Dans les itérations suivantes 'M [i]' frappe celles-ci. –
éditer je mets idiotly M [n - 1 - j] au lieu de M [i] [n - 1 - j] – faishal28