Трабл в рабочем коде

Код работает, в 17 строке сделал чтобы на месте пропущенных букв было _, но не показывает. Потом при вводе букв для слова программа рано показывает верное слово и еще есть 2 попытки для ввода.

import random

def hangman():
print('Добро пожаловать в игру Виселица')

wordlist = ['красный', 'синий', 'черный', 'белый', 'серый', 'фиолетовый', 'оранжевый', ]
secret = random.choice(wordlist)
vowels = 'аиеёоуыэюя'
turns = 5

while turns > 0:
    missed = 0
    for letter in secret:
        if letter in vowels:
            print(letter,end=' ')
        else:
            print('_',end='')
            missed += 1
            
        if missed == 0:
            print('\nТы победил!')
            break
        
        guess = input('\nНазови букву: ')
        guesses = []
        
        if guess not in secret:
            turns -= 1
        print('\nНе угадал')
        print('\n', 'Осталось попыток: ', turns)
        if turns < 5: print ('\n  | ')
        if turns < 4: print ('  O ')
        if turns <3: print (' /|\ ')
        if turns <2: print ('  | ')
        if turns <1: print (' / \ ')
        if turns == 0: print ('\n\nЭто слово: ', secret)

ans = 'да'
while ans == 'да':
hangman()
print('Сыграем еще? (да или нет)')
ans = input()

Ответы (1 шт):

Автор решения: Artiom

Мне показался код слишком сложным, я сделал свой вариант(упростил структуру и добавил _). Вроде все работает:

import random

def hangman():
     print('Добро пожаловать в игру Виселица')

wordlist = ['красный', 'синий', 'черный', 'белый', 'серый', 'фиолетовый', 'оранжевый', ]
secret = random.choice(wordlist)
vowels = 'аиеёоуыэюя'
turns = 5
string = len(secret)* "_"

while turns > 0:
    missed = 0
    for letter in secret:
        print(string)

        #справшиваем букву
        guess = input('\nНазови букву: ')
        guesses = []

        #проверяем букву
        if guess not in secret:
            turns -= 1
            print('\nНе угадал')
        else:
            # заменяем _ на букву
            string = string[:secret.find(guess)] + guess + string[secret.find(guess) + 1:]
            print("\nУгадал")

        # если выиграл
        if string == secret:
            print("Ты выиграл!!!")
            return
        
        print('\n', 'Осталось попыток: ', turns)
        if turns < 5: print ('\n  | ')
        if turns < 4: print ('  O ')
        if turns <3: print (' /|\ ')
        if turns <2: print ('  | ')
        if turns <1: print (' / \ ')
        if turns == 0: print ('\n\nЭто слово: ', secret)

print('Сыграем еще? (да или нет)')
ans = input()
ans = 'да'
while ans == 'да':
    hangman()
→ Ссылка