„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Hangman in Python programmieren

Hangman in Python programmieren

Veröffentlicht am 09.11.2024
Durchsuche:898

Programming Hangman in Python

Für diejenigen, die es nicht wissen: Hangman ist ein Wortratespiel, das traditionell mit Stift und Papier gespielt wird. Ein Wort wird heimlich ausgewählt und das Einzige, was darüber bekannt ist, ist die Anzahl der Buchstaben, die es hat. Der Spieler errät dann einen Buchstaben und wenn er im Wort enthalten ist, wird seine Position angezeigt. Falsche Schätzungen zählen zu Lasten des Spielers. Wenn Sie das Wort erraten, gewinnen Sie, machen Sie zu viele falsche Vermutungen und das Spiel ist vorbei.

Jetzt wissen wir alle, was das Spiel beinhaltet. Mal sehen, wie es aussehen könnte, wenn es in Python gespielt wird.

Word: ---
Wrong guesses: 
Guess a letter > a

Word: -a-
Wrong guesses: 
Guess a letter > g

Word: -a-
Wrong guesses: g
Guess a letter > t

Word: -at
Wrong guesses: g
Guess a letter > c

Word: cat
Well done! You guessed the word with 1 wrong guesses.

Erste Schritte

Lassen Sie uns ein neues Python-Programm starten, um dieses Spiel zu erstellen. Wir brauchen ein Wort zum Erraten und eine Möglichkeit, den Überblick über richtige und falsche Vermutungen zu behalten.

word = "something"
guessed_letters = []
incorrect_letters = []

Was ist mit den eckigen Klammern? Das ist Python-Sprache für eine neue Liste. Eine Liste ist eine Variable, die mehr als einen Wert speichern kann. In diesem Fall werden wir Buchstaben in den Listen speichern, aber Python lässt Sie alles hineingeben.

Unser Spiel wird im Wesentlichen eine Schleife sein, die dem Spieler die bisher erratenen Wortteile zeigt und ihn dann um eine weitere Vermutung bittet. Um dies zu implementieren, können wir eine While-Schleife verwenden. Aber was sollte unsere Bedingung sein, um die Schleife zu beenden? Nun, es gibt zwei Gründe, warum wir das Spiel beenden möchten:

  • Der Spieler hat alle Buchstaben richtig erraten.
  • Der Spieler hat zu viele falsche Schätzungen gemacht.

Die erste Bedingung ist erfüllt, wenn die Anzahl der Buchstaben in der Liste „guesed_letters“ mit der Anzahl der Buchstaben im Wort übereinstimmt. Unsere Schleife muss also laufen, auch wenn das nicht der Fall ist. In Python kann dies als len(guessed_letters) != len(word) geschrieben werden. Die Funktion len() gibt Ihnen die Länge einer Liste oder eines Strings an.

Die zweite Bedingung ist erfüllt, wenn die Anzahl der Buchstaben in der Liste „falsche Buchstaben“ größer ist als die maximal zulässige Anzahl an Schätzungen. Unsere Schleife muss also auch dann laufen, wenn das nicht der Fall ist. In Python kann dies als len(incorrect_letters)

Alles zusammengenommen beginnt unsere while-Schleife so.

# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 



Innerhalb unserer Schleife müssen wir vier Dinge tun:

  1. Zeige dem Spieler das Wort.
  2. Liste der falschen Vermutungen anzeigen.
  3. Lassen Sie den Spieler raten.
  4. Zeichnen Sie auf, ob die Vermutung richtig oder falsch ist.

Lassen Sie uns diese der Reihe nach angehen.

Das Wort zeigen

Wir müssen dem Spieler das Wort zeigen, aber Es sollten nur die Buchstaben angezeigt werden, die er richtig erraten hat. Die restlichen Buchstaben sollten durch einen Bindestrich ersetzt werden. Schreiben wir eine Funktion, die dies für uns erledigt. Es werden zwei Argumente benötigt, das anzuzeigende Wort und eine Liste richtig erratener Buchstaben.

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()

Wir durchlaufen jeden Buchstaben im Wort, indem wir eine for-Schleife verwenden. Anschließend prüfen wir mit dem in-Operator, ob der Buchstabe in der Buchstabenliste enthalten ist. Wenn ja, drucken wir es aus. Wenn nicht, drucken wir stattdessen einen Bindestrich. Wir verwenden das Argument end="" in den Druckaufrufen, um das Drucken einer neuen Zeile zu verhindern.

Zeigt die falschen Vermutungen

Lassen Sie uns eine weitere Funktion schreiben, um die falschen Vermutungen anzuzeigen. Dieses ist viel einfacher als das letzte. Es benötigt ein einzelnes Argument, die Liste der falschen Vermutungen, und verwendet erneut eine for-Schleife, um jedes einzelne Argument auszugeben.

def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()

Die Vermutung des Spielers einholen

Unsere nächste Funktion wird eine Schätzung des Spielers einholen. Um sicherzustellen, dass der Spieler tatsächlich etwas eingibt, verwenden wir eine While-Schleife. Wir werden sie so lange um einen Tipp bitten, bis sie einen eingegeben haben. Schließlich sollte ein Tipp nur aus einem einzelnen Buchstaben bestehen, daher geben wir nur das erste eingegebene Zeichen zurück.

def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]

Aufzeichnung der Vermutung

Sobald wir einen Brief vom Spieler haben, können wir entscheiden, welche unserer beiden Listen wir auch hinzufügen möchten. Wenn der Buchstabe im Wort vorkommt, ist es eine richtige Vermutung. Wir können es mit der Methode append() zur Liste „guesed_letters“ hinzufügen. Wenn es nicht im Wort enthalten ist, sollte es zur Liste „error_letters“ hinzugefügt werden. Aber wir sollten auch prüfen, ob der Buchstabe schon einmal erraten wurde. Wir tun dies, indem wir mit dem in-Operator prüfen, ob es sich um eine der Listen handelt. (Auf diese Weise wird jede Schätzung nur einmal aufgezeichnet.)

if letter in word and letter not in guessed_letters:
    guessed_letters.append(letter)
elif letter not in incorrect_letters:
    incorrect_letters.append(letter)

Das Spiel beenden

Zu guter Letzt müssen wir dem Spieler eine passende Nachricht anzeigen, wenn die Spielschleife endet. Je nachdem, ob sie das Wort erraten haben oder nicht, lautet die Botschaft Erfolg oder Misserfolg. Woher wissen wir, ob sie das Wort richtig erraten haben? Die Anzahl der Buchstaben in der Liste „guesed_letters“ hat die gleiche Länge wie das Wort.

# End of game message.
if len(guessed_letters) == len(word):
    show_word(word, guessed_letters)
    print(f"Well done! You guessed the word with {len(incorrect_letters)} wrong guesses.")
else:
    print(f"Too many wrong guesses! The word was '{word}'")

Das ist es! Wir haben ein komplettes Hangman-Spiel. Um das Spiel schwieriger oder einfacher zu machen, ändern Sie die Anzahl der zulässigen falschen Schätzungen.

Vollständige Programmliste

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()


def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()


def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]


word = "something"
guessed_letters = []
incorrect_letters = []


# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 




          

            
        
Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/robc79/programming-hangman-in-python-2c73?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3