Ich habe ein Hangman-Spiel mit einem Fehler erstellt: Wenn Sie den gleichen Buchstaben zweimal erraten, wird er unterbrochen. Ich habe eine Liste aller Buchstaben des Alphabets erstellt und wenn der Spieler diesen Buchstaben rät, wird er aus der Liste entfernt, in der die verbleibenden Zeichen angezeigt werden, die erraten kann. Dies wird durch die .remove-Methode erreicht, die bricht, wenn das Zeichen bereits von einer vorherigen Schätzung entfernt wurde.Eine Liste scannen - IndexError: Listenindex außerhalb des gültigen Bereichs
Ich habe versucht, diese Methode in eine for-Schleife zu verschachteln, die die alphabetische Liste scannt und die Schätzung des Benutzers für eine Übereinstimmung in der Liste überprüft und sie entfernt. Wenn es bereits erraten wurde, wird nichts passieren. Der Fehler, den ich erhalte, ist ein Indexfehler, vermutlich für die Länge der Schätzung. Meine Verwirrung kommt von der Tatsache, dass ich diese genau gleiche Aufgabe direkt unten erreichen kann, wenn ich das Henkerwort einscanne, um der Schätzung des Spielers zu entsprechen. Bitte beachten Sie den folgenden Kurzcode:
# Play begins and player guesses a letter
player_word = ['_ '] * len(cpu_word)
player_word2 = ['_'] * len(cpu_word)
alphabet = ['a','b',etc.]
print 'You have 10 guesses left'
# Determines if the guess is correct
for count in range(10)[::-1]:
guess = raw_input(str('Guess a letter: '))
# This is the previous method that creates a bug:/
# alphabet.remove(guess)
for e in xrange(len(alphabet)):
if alphabet[e] == guess:
alphabet.remove(guess)
for i in xrange(len(cpu_word)):
if cpu_word[i] == guess:
player_word [i] = cpu_word [i]
print 'Correct!'
Ich habe zwei Fragen. Der erste ist, dass mir jemand diesen Fehler erklären kann, insbesondere warum er das Hangman-Wort scannt, aber nicht für das Scannen der Liste funktioniert.
Und zweitens kann jemand eine Lösung für dieses Problem bieten.
Ich bin neu in Codierung, so dass jede Info sehr geschätzt wird!
Dank
Danke Münchhausen, das ist die einfache Lösung, nach der ich gesucht habe! – Chris