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