Index out of range

Fermé
Ponydu38 - 12 févr. 2018 à 15:48
 Utilisateur anonyme - 12 févr. 2018 à 16:25
Bonjour,

Je suis en classe préparatoire et nous avons un projet à réaliser en informatique : nous devons coder le jeu 2048. La première tâche est d’implémenter une fonction qui prend en entrée une ligne d’un tableau (comme [ 2, 0, 2, 4]) et qui retourne True si un déplacement dans la direction LEFT modifie l’état de la ligne ou False sinon. Elle retourne donc True ssi la ligne contient au moins une tuile (un nombre) à droite d’une case vide ou contient deux nombres côte-à-côte identiques.

J'ai donc écrit le programme Python ci-dessous. Le problème est que mon programme ne marche que lorsqu'une des conditions est vérifiées (donc quand le déplacement est possible). Quand le déplacement est impossible, lorsque le programme arrive à la dernière valeur de i, le programme ne trouve pas la valeur i+1 et me renvoi "List index out of range". Je ne sais pas comment y remédier. Pourriez-vous m'aider s'il vous plait?

def slide_is_possible(line):
for i in range(len(line)):
if line[i] == 0 and line[i+1] != 0:
return True
if line[i] == line[i+1]:
return True
return False
raise NotImplementedError()

print(slide_is_possible([2,0,2,4])) #Doit renvoyer True
print(slide_is_possible([2,2,2,2])) #Doit renvoyer True
print(slide_is_possible([4,4,0,4])) #Doit renvoyer True
print(slide_is_possible([2,4,2,0])) #Doit renvoyer False (Ne marche pas)
print(slide_is_possible([2,4,2,4])) #Doit renvoyer False (Ne marche pas)

1 réponse

Utilisateur anonyme
12 févr. 2018 à 16:25
Bonjour

Je ne connais pas python, mais
for i in range(len(line)-1):
me semblerait logique.
0