Подход 1 (рекомендуется)
вы можете создать словарь, в котором ключом будут буквы вашего ответа, например, для apple
, dict keys
- {a,p,l,e}
Теперь все, что нам нужно сделать, это зациклитьlist = ['a', 'p', 'p', 'l', 'e']
idx = 'a( 0) p( 1) p(2) l ( 3) e( 4)'
и продолжайте добавлять индекс буквы в качестве значения.
после этого ваш дикт будет выглядеть следующим образом {'a': [0], 'p': [1, 2], 'l': [3], 'e': [4]})
from collections import defaultdict
ans_list = list('apple')
replaceble_list = ['_']*len(ans_list)
guess = 'p'
char_idx_dict = defaultdict(list)
for idx,char in enumerate( ans_list):
char_idx_dict[char].append(idx)
if guess in char_idx_dict:
for idx in char_idx_dict[guess]:
replaceble_list[idx] = guess
print(replaceble_list)
# ['_', 'p', 'p', '_', '_']
Подход 2, если вы настаиваете на использовании list.index(x[, start[, end]])
ans_list = list('apple')
replaceble_list = ['_']*len(ans_list)
def get_indices_list( user_letter):
i = 0
idx_list = []
while i < len(ans_list):
try:
result = ans_list.index( user_letter, i, len(ans_list))
idx_list.append( result)
except ValueError:
break
i = result+1
return idx_list
chance_left = 5
while chance_left > 0:
guess = input('enter ').lower()
chance_left-=1
if guess in ans_list:
for idx in get_indices_list( guess):
replaceble_list[idx] = guess
print(replaceble_list)
if replaceble_list == ans_list:
print('you win')
break
else:
print('game over')
'''
enter a
['a', '_', '_', '_', '_']
enter p
['a', 'p', 'p', '_', '_']
enter l
['a', 'p', 'p', 'l', '_']
enter e
['a', 'p', 'p', 'l', 'e']
you win
enter t
['_', '_', '_', '_', '_']
enter u
['_', '_', '_', '_', '_']
enter p
['_', 'p', 'p', '_', '_']
enter o
['_', 'p', 'p', '_', '_']
enter l
['_', 'p', 'p', 'l', '_']
game over
'''