Работа со строками в игре Палач? Python

шановне панство, я начал только учить питон и у меня к вам вопрос, в ниже расположеном коде у меня игра Палач. Основная моя проблема - проверка ввода букв на уникальность, то есть если подряд вводится одна и та же буква, то вылетает сообщения "You've already guessed this letter". Я попробовал втулить своё - пишет что индекс строки вне допустимого диапазона - подскажите, пожалуйста что делать.

import random
import re

print("H A N G M A N")
print()

words = ['python', 'java', 'kotlin', 'javascript']
guess = random.choice(words)
secret_word = str('-' * len(str(guess)))
tries = 8
a = True

while a is True:
    print()
    if secret_word != guess:
        print(secret_word)
    else:
        print(null)
    letter = input("Input a letter:")
    if (len(letter) > 1) or (len(letter) == 0):
        print("You should input a single letter")
    elif not letter.islower():
        print("Please enter a lowercase English letter")
    elif letter not in set(guess):
        tries -= 1
        print("That letter doesn't appear in the word")
    elif letter in secret_word:
        tries -= 1
        print("No improvements")
    elif (letter[tries] == letter[tries+1]):
        print("You've already guessed this letter")
    else:
        indexes = [m.start() for m in re.finditer(letter, guess)]
        for ind in indexes:
            dop = secret_word[:ind] + letter + secret_word[ind + 1:]
            secret_word = dop
    if tries == 0:
        a = False
        print("You lost!")
    if secret_word == guess:
        a = False
        print("\n", guess)
        print(f"You guessed the word! {secret_word}\nYou survived!")

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

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

Просто уберите эту проверку и почти всё заработает:

elif (letter[tries] == letter[tries+1]):
    print("You've already guessed this letter")

Вы проверяете тут непонятно чего - ведь в letter находится ровно одна буква, при обращении по индексу больше 0 будет ошибка.

Для проверки вводилась ли буква ранее заведите множество:

already_guessed = set()

Добавляйте в него введённую букву в самом конце цикла:

already_guessed.add(letter)

А потом проверяйте вместо вашей непонятной проверки таким же образом, как у вас сделано чуть выше через in:

elif letter in already_guessed:
    print("You've already guessed this letter")
→ Ссылка