Implementazione del gioco Python Hangman

Costruisci ed esegui un gioco dell'Impiccato in Python. Esplora il controllo dei set di caratteri, i contatori dei tentativi rimanenti e la sostituzione delle stringhe di parole nascoste.

Prova nell'editor

Panoramica

Hangman è un gioco di indovinare le parole che addestra gli sviluppatori a gestire stringhe utente, elenchi di caratteri mutabili e cicli di convalida.

Il motore sceglie una parola casuale da un elenco predefinito. Presenta al giocatore spazi vuoti corrispondenti alla lunghezza della parola. Ad ogni tentativo, la lettera viene rivelata oppure il conteggio degli errori rimanenti diminuisce di uno.

In Python, gestiamo questo flusso di gioco utilizzando elenchi di caratteri anziché stringhe immutabili, consentendo rivelazioni rapide sul posto e tenendo traccia dei caratteri precedentemente indovinati per evitare penalità.

Codice e output di esecuzione

Uno script di gioco Hangman standard da riga di comando con input di sessione simulata.

import random

def play_hangman():
    word_bank = ["python", "compiler", "terminal", "debugger", "variable"]
    word = random.choice(word_bank)
    guessed_word = ["_"] * len(word)
    guessed_letters = set()
    attempts_remaining = 6
    
    print("Welcome to Hangman!")
    print(f"Word length: {' '.join(guessed_word)}")
    
    # Mocking guess inputs for deterministic run
    mock_guesses = ["e", "o", "a", "t", "r", "n", "i", "m", "p", "c", "l"]
    
    for guess in mock_guesses:
        if attempts_remaining <= 0 or "_" not in guessed_word:
            break
            
        print(f"\nGuessing letter: '{guess}'")
        if guess in guessed_letters:
            print("You already guessed that!")
            continue
            
        guessed_letters.add(guess)
        
        if guess in word:
            for idx, char in enumerate(word):
                if char == guess:
                    guessed_word[idx] = guess
            print(f"Correct! Word state: {' '.join(guessed_word)}")
        else:
            attempts_remaining -= 1
            print(f"Incorrect! Attempts remaining: {attempts_remaining}")
            
    if "_" not in guessed_word:
        print(f"\nCongratulations! You guessed the word '{word}'!")
    else:
        print(f"\nGame Over! The word was '{word}'.")

# Seed random to ensure output matches the word 'compiler'
random.seed(35)
play_hangman()
Uscita terminale
Welcome to Hangman!
Word length: _ _ _ _ _ _ _ _

Guessing letter: 'e'
Correct! Word state: _ _ _ _ _ _ e _

Guessing letter: 'o'
Correct! Word state: _ o _ _ _ _ e _

Guessing letter: 'a'
Incorrect! Attempts remaining: 5

Guessing letter: 't'
Incorrect! Attempts remaining: 4

Guessing letter: 'r'
Correct! Word state: _ o _ _ _ l e r
... (guesses continue)
Congratulations! You guessed the word 'compiler'!

Implementazione passo dopo passo

  • Apprendimento degli algoritmi di analisi condizionale delle stringhe
  • Monitoraggio dello stato utilizzando set per ricerche storiche uniche
  • Costruire giochi educativi terminali interattivi

Domande frequenti

Perché utilizzare un set per le lettere indovinate?

Il controllo dell'appartenenza ai set Python viene eseguito in un tempo medio O(1), mentre gli elenchi richiedono un tempo O(n). Ciò garantisce ricerche più rapide durante la verifica delle ipotesi precedenti.

Come posso caricare elenchi di parole più grandi?

Puoi caricare migliaia di parole leggendo da un file di testo utilizzando la funzione `open()` di Python o recuperarle dinamicamente utilizzando un framework di richieste API web.

Argomenti correlati