Python: erreur list index out of range

Résolu/Fermé
camapa - Modifié le 20 déc. 2020 à 17:01
 camapa - 23 déc. 2020 à 20:06
Bonjour,
je suis entrain de faire un code pour mes cours on doit coder un démineur, je ne parviens pas a résoudre un problème qui m'indique index out of range voici mon programme:

def mines_autour(T):
 for i in range(n):
  L=[]
  for j in range(m):
   L.append(0)
  M.append(L)
  
  for i in range(len(T)) :
   for j in range(len(T[i])) :
     if T[i][j]==2:
      if i-1>=0:
       M[i-1][j]=M[i][j]+1
      if i+1<len(M)-1:
       M[i+1][j]=M[i][j]+1
      if j+1<len(T[i])-1:
       M[i][j+1]=M[i][j]+1
      if j-1>=0:
       M[i][j-1]=M[i][j]+1   
 return(M)
print(mines_autour(T))


mon problème se trouve au niveau des if

5 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
22 déc. 2020 à 11:56
Bonjour,

Ton problème doit se situer au niveau des bords : tu fais M[i+1] et autres M[][j-1] sans vérifier que ces valeurs existent.

Xavier
1
Avec mon if je suis pas sensé vérifier que ça existe justement
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Camapa
23 déc. 2020 à 11:19
Au temps pour moi j'avais vraiment lu ton code trop vite.
Par contre, sur le troisième if
      if j+1<len(T[i])-1:
       M[i][j+1]=M[i][j]+1

Tu vérifies la taille par rapport à T alors qu'ensuite tu prends dans M.
Es-tu sûr qu'elles ont la même taille ?
0
camapa > Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
Modifié le 23 déc. 2020 à 18:36
bonjour,
oui ce sont exactement la même taille on fait M a partir de T, et même en changeant T par M le problème persiste je ne le comprend vraiment pas
0