2016-11-17 3 views
-1

Для моего приложения палача код следующий;поиск повторяющихся символов в списке для Hangman-python3

text=list(input("Enter the word to be guessed:")) 
guess=[] 
tries=5 
clue=input("Enter a clue: ") 
print('RULES:\n 1) type exit to exit applcation \n 2) type ? for the clue') 

for i in range(len(text)): 
    t='_ ' 
    guess.append(t) 
print(guess) 

while True: 
    g=input("Guess a letter: ") 
    if g in text: 
     print("you guessed correct") 
     y=text.index(g) 
     guess[y]=g 
     print(guess) 
    continue 
elif g=='exit': 
    exit() 
elif g=='?': 
    print(clue) 
elif tries==0: 
    print ("you have run out of tries, bye bye") 
    exit() 
else: 
    print(g,' is not in the word') 
    tries -=1 
    print("you have",tries,'tries left') 
    continue 

для кода, например, если текст угадывается был «аватар», когда «а» угадывается, он будет возвращать только первый экземпляр письма, а не на позициях; текст [2] [4]

ответ

0

Ваш вопрос исходит от использования y = text.index(g). Это вернет индекс первого найденного совпадения. Вам нужно сделать что-то более похожее на следующее:

if g in text: 
    print("you guessed correct") 
    for y in range(len(text)): 
     if text[y] == g: 
      guess[y] = g 
    print(guess) 
0

Вы можете использовать регулярные выражения для поиска индексов шаблона.

>>import re 
>> [i.start() for i in re.finditer('a', 'avatar')] 
[0, 2, 4] 
+0

по какой-то причине, что is'nt работает для меня, будет ли код запущен для Python3.x? – reuben

+0

Какая ошибка вы получаете? – Vince

+0

y = [i.start() для i в re.finditer (g, текст)] Файл «/Users/----/anaconda/lib/python3.5/re.py», строка 220, в нахождении return _compile (pattern, flags) .finditer (string) TypeError: ожидаемая строка или байтоподобный объект – reuben

Смежные вопросы