bg_alphabet = "абвгдежзийклмнопрстуфхцчшщъьюя" BLANK = '_' MOVE_SEP = '.................................' WIN_MESSAGE = "WIN" LOSS_MESSAGE = "LOSE" HANG_STAGES = [[], ["|"], ["Г"], ["Го"], ["Го", " |"], ["Го", "/|"], ["Го", "/|\\"], ["Го", "/|\\", "/"], ["Го", "/|\\", "/ \\"], ] def generate_hint(word, guesses): is_win = True reveals = [] for pos, character in enumerate(word): if pos == 0 or pos == len(word) - 1: reveals += character elif character in guesses: reveals += character else: is_win = False reveals += BLANK return ' '.join(reveals).upper(), is_win def print_state(state): for line in HANG_STAGES[state]: print(line) def main(): word = input("word >") guesses = set() state = 0 while True: hint, is_win = generate_hint(word, guesses) print(hint) print_state(state) if is_win: print(WIN_MESSAGE) break while True: guess = input("guess >") if guess in bg_alphabet: break if guess not in word and guess not in guesses: state += 1 if state > len(HANG_STAGES): print(LOSS_MESSAGE) break guesses.add(guess) print(MOVE_SEP) if __name__ == '__main__': main()