Implémentation du jeu Python Hangman

Créez et exécutez un jeu Hangman en Python. Explorez la vérification des jeux de caractères, les compteurs d'essais restants et le remplacement des chaînes de mots masquées.

Essayez dans l'éditeur

Aperçu

Hangman est un jeu de devinettes de mots qui forme les développeurs à la gestion des chaînes utilisateur, des listes de caractères mutables et des boucles de validation.

Le moteur sélectionne un mot aléatoire dans une liste prédéfinie. Il présente au joueur des espaces vides correspondant à la longueur du mot. À chaque supposition, la lettre est révélée ou le nombre d’erreurs restantes diminue d’une.

En Python, nous gérons ce flux de jeu en utilisant des listes de caractères au lieu de chaînes immuables, permettant des révélations rapides sur place tout en gardant une trace des caractères précédemment devinés pour éviter les pénalités.

Sortie de code et d'exécution

Un script de jeu Hangman en ligne de commande standard avec une entrée de session simulée.

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()
Sortie 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'!

Mise en œuvre étape par étape

  • Apprentissage d'algorithmes d'analyse de chaînes conditionnelles
  • Suivi d'état à l'aide d'ensembles pour des recherches d'historique uniques
  • Construire des jeux éducatifs de terminaux interactifs

Foire aux questions

Pourquoi utiliser un jeu de lettres devinées ?

La vérification de l'appartenance aux ensembles Python s'exécute en un temps moyen O(1), tandis que les listes nécessitent un temps O(n). Cela garantit des recherches plus rapides lors de la vérification des suppositions précédentes.

Comment puis-je charger des listes de mots plus grandes ?

Vous pouvez charger des milliers de mots en lisant à partir d'un fichier texte à l'aide de la fonction `open()` de Python, ou les récupérer dynamiquement à l'aide d'un cadre de requêtes d'API Web.

Sujets connexes