2016-12-08 3 views
1

Mein Hangman-Code funktioniert derzeit und zieht Leben für jede falsche Schätzung ab, aber wenn der Benutzer bereits einen Buchstaben erraten hat und diesen Buchstaben erneut versucht, zieht er dennoch einen Live-Vorgang ab, sollte aber bereits einen Fehler melden. Mein Code ist:Python - Hangman Letter bereits erraten

def playGame(word, lives): 
    lst=[] 
    dct = start(word, lives) 

     1: 
      print("Please enter 1 letter") 

     elif letter in lst: 
      print("Already in list") 

     else: 
      count = updatelives(dct, letter) 
      print(letter,"occurred", count, "times") 
    if guess(dct): 
     print(dct["secret"]) 
     print("Well done, you guessed the word") 
    else: 
     print("You've run out of guesses.") 
     print("The word was", dct["secret"]) 
    return 

Ich habe versucht, eine leere Liste erstellen, jeden Buchstaben anhängen eingegeben Hinzufügen einer elif Erklärung, „Elif Brief in lst: print (“ Error "), aber das weiterhin den Fehler, auch wenn es nicht ein duplizieren. Was um dies mein Weg sein würde?

ich bin nicht sicher, wenn u andere Teil des Codes sehen müssen, aber das ist der Hauptteil

+0

können Sie die Funktion 'def rate (dictionary)' einschließen? und 'updelives()' für diese Angelegenheit – TemporalWolf

+0

das Anhängen von falschen Buchstaben an eine leere Liste und Verweisen auf Vermutungen gegen diese Liste klingt wie ein guter Weg, es zu tun, können Sie Ihren Versuch damit zeigen? – Eric

+0

Ich habe den Hauptbeitrag aktualisiert –

Antwort

0

Sie ihre Vermutung anhängen, bevor geprüft wird, ob es schon in der Liste:

lst.append(letter) 
... 
elif letter in lst: 
    print("Already in list") 

So wird es immer in der Liste sein

+0

Um klarer zu sein ... füge dein 'lst.append (letter)' zu deiner else-Anweisung hinzu, so wird es nur an die Liste angehängt, NACHDEM es alle Prüfungen durchlaufen hat – Eric

+0

Das wäre wahrscheinlich besser, wenn Sie stattdessen eine festgelegte Datenstruktur verwenden, so dass die Suchvorgänge O (1) sind. – Darthfett