Implementacja gry Wisielec w Pythonie

Zbuduj i uruchom grę Hangman w Pythonie. Przeglądaj sprawdzanie zestawów znaków, liczniki pozostałych prób i zastępowanie ukrytych ciągów słów.

Spróbuj w Edytorze

Przegląd

Hangman to gra polegająca na zgadywaniu słów, która szkoli programistów w zakresie obsługi ciągów znaków użytkownika, list modyfikowalnych znaków i pętli sprawdzania poprawności.

Silnik wybiera losowe słowo z predefiniowanej listy. Wyświetla graczowi puste spacje odpowiadające długości słowa. Z każdym odgadnięciem odkrywana jest litera lub liczba pozostałych błędów spada o jeden.

W Pythonie zarządzamy przebiegiem gry, używając list postaci zamiast niezmiennych ciągów znaków, co pozwala na szybkie odkrywanie na miejscu, jednocześnie śledząc wcześniej odgadnięte postacie, aby uniknąć kar.

Dane wyjściowe kodu i wykonania

Standardowy skrypt gry Wisielec wiersza poleceń z wprowadzanymi danymi sesji próbnej.

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()
Wyjście terminala
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'!

Wdrażanie krok po kroku

  • Nauka algorytmów warunkowego analizowania ciągów znaków
  • Śledzenie stanu przy użyciu zestawów do unikalnego wyszukiwania historii
  • Budowanie interaktywnych, terminalowych gier edukacyjnych

Często zadawane pytania

Po co używać zestawu do odgadywania liter?

Sprawdzanie członkostwa w zbiorach Pythona przebiega w średnim czasie O(1), podczas gdy listy wymagają czasu O(n). Zapewnia to szybsze wyszukiwanie podczas weryfikacji poprzednich domysłów.

Jak mogę załadować większe listy słów?

Możesz załadować tysiące słów, czytając z pliku tekstowego za pomocą funkcji `open()` Pythona lub pobierać je dynamicznie, korzystając ze struktury żądań internetowego interfejsu API.

Powiązane tematy