Как оставить нужные символы в списках?

Предположим компьютер выбрал слово "Снег" Пользователь называет слово "Гол". Вывод будет: ___г Пользователь не угадал => цикл повторяется, он называет слово "Роса". Вывод будет: С___ Вопрос: Как сохранить букву "г" из прошлого цикла?

file = open('Words.TXT', encoding='utf-8')
files = file.read()
stroke = files.split('\n')

randomizer = random.choice(stroke)
list(randomizer)
print('Добро пожаловать в игру угадай слово!')
game = True
while game:
    userinput = input('Назовите букву или целое слово: ')
    list(userinput)
    lst = []
    for sym in randomizer.lower():
        if sym in userinput.lower():
            lst.append(sym)
        else:
            lst.append('_')
    results = ''.join(lst)
    print(results.capitalize())
    if results == randomizer.lower():
        print('Вы угадали слово!')
        game = False

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

Автор решения: Nowhere Man

В представленном коде список lst и results создаются заново при каждой попытке угадать слово.

Значит, следует создать список с угаданными буквами до цикла, проинициализировав его "неизвестными" символами, а в цикле устанавливать буквы по индексу (как один из вариантов решения).

file = open('Words.TXT', encoding='utf-8')
files = file.read()
stroke = files.split('\n')

word = random.choice(stroke).lower()
print('Добро пожаловать в игру угадай слово!')
game = True
answer = ['_'] * len(word) # ответ - список угаданных букв
while game:
    guess = input('Назовите букву или целое слово: ').lower()
    for i in range(len(word)):
        letter = word[i]
        if letter in guess:
            answer[i] = letter # буква угадана, меняем в ответе
    result = ''.join(answer)
    print(result.capitalize())
    if result == word:
        print('Вы угадали слово!')
        game = False

Правда, такой способ может приводить к упрощённому "угадыванию", когда в загаданном слове есть несколько одинаковых букв, например, если загадано success (4 разных буквы из 7), а пользователь введёт excuse.

→ Ссылка