Kodduu Python: post #1538 — TG.ME

🔥 Виселица: текстовая игра в консоли за 25 строк


import random
from typing import List, Set

WORDS: List[str] = ["python", "программирование", "телеграм", "алгоритм", "разработчик", "функция", "декоратор"]

def print_board(guessed: List[str], attempts: int) -> None:
"""Выводит текущее состояние игры."""
print(" ".join(guessed))
print(f"Попыток осталось: {attempts}\n")

def check_winner(guessed: List[str]) -> bool:
"""Проверяет, угадано ли слово."""
return "_" not in guessed

def play_hangman() -> None:
"""Основной игровой цикл."""
word = random.choice(WORDS)
guessed = ["_"] * len(word)
attempts = 6
guessed_letters: Set[str] = set()

print("🎮 Добро пожаловать в Виселицу!\n")

while attempts > 0 and not check_winner(guessed):
print_board(guessed, attempts)
letter = input("Введите букву: ").lower().strip()

if len(letter) != 1 or not letter.isalpha():
print(" Введите одну букву!\n")
continue

if letter in guessed_letters:
print("⚠️ Вы уже вводили эту букву!\n")
continue

guessed_letters.add(letter)

if letter in word:
for i, char in enumerate(word):
if char == letter:
guessed[i] = letter
print(" Есть такая буква!\n")
else:
attempts -= 1
print(" Такой буквы нет.\n")

if check_winner(guessed):
print(f"🎉 Поздравляем! Слово: {word.upper()}")
else:
print(f"💀 Вы проиграли. Слово было: {word.upper()}")

if __name__ == "__main__":
try:
play_hangman()
except KeyboardInterrupt:
print("\n👋 Игра прервана. До новых встреч!")
except Exception as e:
print(f"Неожиданная ошибка: {e}")

📌 Полноценная консольная игра «Виселица» с проверкой победы, ничьей, защитой от неверного ввода и отслеживанием использованных букв. Отличный пример структуры игры, работы со строками/списками и обработки пользовательского ввода. Идеально как база для текстовых игр и практики алгоритмов.

Подпишись 👉🏻 @KodduuPython 🤖
July 15, 2026 159 3