Das Ziel: Verwandle ein leeres ASCII Gitter in ein Tic-Tac-Toe Board. Es sollte diese aussehen, wenn sie leer:Indexfehler in einer Python `for` Schleife erhalten
| |
| |
____|________|____
| |
| |
____|________|____
| |
| |
| |
Der Fehler:
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 da die Menschen verrückt letzte Mal habe ich geschrieben nur ein Teil
Ich verstehe nicht, warum es Tupel Erwähnens . Die einzige, die ich sehe, ist die Range (1, 10) -Funktion, und da es eine for-Schleife ist, sollte es keinen Indexfehler geben. Alle Kommentare und Kritik werden geschätzt. Danke im Voraus.
'myformat' sollte ein 3-läniges Tupel zurückgeben, um' format' zu liefern, aber es gibt nur eine Zeichenkette zurück. Was erwarten Sie von Format, um die anderen Felder zu füllen? Versuchen Sie 'print (" {0} | {0} | {0} "' –
Python, wie die meisten Programmiersprachen, zählt Indizes von "0", nicht von "1" - Ihr letzter Index in "Moves" ist "8 ", nicht" 9 ". – jsbueno
@ Jean-FrançoisFabre Du hast recht. Ich habe' Return' für jede Variable geschrieben, wenn ich etwas wie 'a =' ... ', b ='... ' c = '...' a, b, c zurückgeben. Ich werde es ändern und sehen, ob es das Problem behebt. –