Implementação do jogo Python Hangman

Crie e execute um jogo Hangman em Python. Explore a verificação de conjuntos de caracteres, contadores de tentativas restantes e substituição de strings de palavras ocultas.

Experimente no Editor

Visão geral

Hangman é um jogo de adivinhação de palavras que treina desenvolvedores no manuseio de strings de usuário, listas de caracteres mutáveis e loops de validação.

O mecanismo escolhe uma palavra aleatória de uma lista predefinida. Apresenta ao jogador espaços em branco correspondentes ao comprimento da palavra. A cada palpite, a letra é revelada ou a contagem de erros restantes cai em um.

Em Python, gerenciamos o fluxo do jogo usando listas de caracteres em vez de strings imutáveis, permitindo revelações rápidas no local enquanto monitoramos os caracteres adivinhados anteriormente para evitar penalidades.

Saída de código e execução

Um script de jogo Hangman de linha de comando padrão com entrada de sessão simulada.

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()
Saída terminal
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'!

Implementação passo a passo

  • Aprendendo algoritmos de análise de strings condicionais
  • Rastreamento de estado usando conjuntos para pesquisas de histórico exclusivas
  • Construindo jogos educacionais terminais interativos

Perguntas frequentes

Por que usar um conjunto para letras adivinhadas?

A verificação da associação em conjuntos Python é executada em tempo médio O(1), enquanto as listas requerem tempo O(n). Isso garante pesquisas mais rápidas ao verificar suposições anteriores.

Como posso carregar listas de palavras maiores?

Você pode carregar milhares de palavras lendo um arquivo de texto usando a função `open()` do Python ou buscá-las dinamicamente usando uma estrutura de solicitações de API da web.

Tópicos Relacionados