Python: erreur list index out of range
Résolu
camapa
-
camapa -
camapa -
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:
mon problème se trouve au niveau des if
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
-
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 -
Bonjour,
Merci pour cette information. As-tu une question ?
Pour rappel :Les réponses sont données par des bénévoles, pas par des machines. Il est vivement recommandé d'user des formes minimales de la politesse ("bonjour', "s'il vous plait", "merci d'avance") pour rester dans le cadre de notre charte d'utilisation.
Un détail :
quand tu saisis ton code (un copié-collé fait l'affaire) dans la fenêtre d'édition, pense à lui attribuer la couleur syntaxique et la forme correcte avec le bouton<>
▼
.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
peux-tu fournir un code testable, qui montre le problème? -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
as-tu ajouté des print pour vérifier que ton programme se comporte comme tu l'imagines?
c'est bien d'écrire "on fait M a partir de T", c'est encore mieux de le vérifier.
je pense qu'ainsi tu découvriras rapidement ton erreur.-
def Int_jeu(n,m,d): while n<2: n=int(input("entrer le nombre de ligne supéreiur ou égale à 2: ")) while m<2: m=int(input("entrer le nombre de collone supéreiur ou égale à 2: ")) while n*m<9: if n<3: n=int(input("entrer le nombre de ligne supérieur à 3: ")) elif m<3: m=int(input("entrer le nombre de collone supérieur à 3: ")) for i in range(n): L=[] for j in range(m): L.append(0) T.append(L) if(d==1): x=(n*m)*15//100 if x<1: x=1 for i in range(x): i=randint(0,n-1) j=randint(0,m-1) T[i][j]=2 elif(d==2): x=(n*m)*30//100 if x<1: x=2 for i in range(x): i=randint(0,n-1) j=randint(0,m-1) T[i][j]=2 elif(d==3): x=(n*m)*45//100 if x<1: x=3 for i in range(x): i=randint(0,n-1) j=randint(0,m-1) T[i][j]=2 elif(d==4): x=(n*m)*60//100 if x<1: x=4 for i in range(x): i=randint(0,n-1) j=randint(0,m-1) T[i][j]=2 while d<0 or d>4: print("entrer un niveau disponible") d=int(input("entrer la dificulter voulu entre 1 et 4, (1 etant le plus simple) : ")) return(T) print(Int_jeu(n,m,d)) 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(M)) : for j in range(len(M[i])) : if T[i][j]==2: if i-1>=0: M[i-1][j]=M[i-1][j]+1 if i+1<len(M): M[i+1][j]=M[i+1][j]+1 if j+1<len(M[i]): M[i][j+1]=M[i][j+1]+1 if j-1>=0: M[i][j-1]=M[i][j-1]+1 if i-1>=0 and j-1>=0: M[i-1][j-1]=M[i-1][j-1]+1 if i-1>=0 and j+1<len(M[i]): M[i-1][j+1]=M[i-1][j+1]+1 if i+1<len(M) and j-1>=0: M[i+1][j-1]=M[i+1][j-1]+1 if i+1<len(M) and j+1<len(M[i]): M[i+1][j+1]=M[i+1][j+1]+1 return(M) print(mines_autour(T))
c'est le programme presque au complet
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -