L'objectif: transformer une grille ASCII vide dans une carte-morpion. Il faut regarder cela ce vide:erreur d'index dans une boucle `for` Python
| |
| |
____|________|____
| |
| |
____|________|____
| |
| |
| |
L'erreur:
def myformat(moves, line):
# there's got to be a better way to do this
if line in [1, 4, 7]:
if moves[line] == 'x':
return "\ /"
elif moves[line] == 'o':
return " oo "
elif moves[line] == 'none':
return " "
elif line in [2, 5, 8]:
if moves[line] == x:
return " xx "
elif moves[line] == o:
return "o o"
elif moves[line] == "none":
return " "
elif line in [3, 6]:
if moves[line] == x:
return "/__\b"
elif moves[line] == o:
return "o__o"
elif moves[line] == "none":
return "____"
elif line == 9:
if moves[line] == x:
return "/__\b"
elif moves[line] == o:
return "o__o"
elif moves[line] == "none":
return " "
else:
print("Fatal error.")
>>> moves = ['none']*9
>>> moves
['none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none']
>>> for line in range(1, 10):
print("{}|{}|{}".format((myformat(moves, line))))
Traceback (most recent call last):
File "<pyshell#24>", line 2, in <module>
print("{}|{}|{}".format((myformat(moves, line))))
IndexError: tuple index out of range
full code puisque les gens sont devenus fous dernière fois que je ne posté partie
Je ne comprends pas pourquoi il est mentionné tuples . Le seul que je vois est la fonction range (1, 10), et comme c'est une boucle for, il ne devrait pas y avoir d'erreur d'index. Tous les commentaires et critiques sont appréciés. Merci d'avance.
'myformat' doit retourner un tuple 3-len pour nourrir' format', mais il ne retourne que chaîne. que voulez-vous que le format devine pour remplir les autres champs? peut-être essayer 'print (" {0} | {0} | {0} "' –
Python, comme la plupart des langages de programmation, compte les index de "0", pas de "1" - votre dernier index dans "moves" est "8 ", pas" 9 " – jsbueno
@ Jean-FrançoisFabre Vous avez raison, j'ai écrit' return' sur chaque variable quand je voulais mettre quelque chose comme 'a = '...', b = '. c = '....' return a, b, c.' Je vais le changer et voir s'il résout le problème. –