• При запуске кода на питон, который должен работать как игра виселица возникает проблема, что при нажатии первой, любой буквы стирается одна черточка, которая должна обозначать букву. Код: def check_letter(letter): global error_count new_guess = '' old_guess = word_label['text'] found = False for i in range(len(guessed_word)): if letter.lower() == guessed_word[i]: if old_guess[i] == '_': # добавлено новое условие new_guess += letter.lower() found = True else: new_guess += old_guess[i] else: new_guess += old_guess[i] word_label.config(text=new_guess) if new_guess == guessed_word: print("You win!") elif not found: error_count += 1 if error_count == 10: print("You lose!") else: draw_hangman() Помогите пожалуйста исправить ошибку. Заранее благодарен за помощь!

Ответы 1

  • Ответ:

    def check_letter(letter):

    global error_count

    new_guess = ''

    old_guess = word_label['text']

    found = False

    for i in range(len(guessed_word)):

    if letter.lower() == guessed_word[i]:

    if old_guess[i] == '_': # если текущий символ - пустая буква, заменяем ее на угаданную букву

    new_guess += letter.lower()

    else:

    new_guess += old_guess[i]

    found = True

    else:

    new_guess += old_guess[i]

    word_label.config(text=new_guess)

    if new_guess == guessed_word:

    print("You win!")

    elif not found:

    error_count += 1

    if error_count == 10:

    print("You lose!")

    else:

    draw_hangman()

    Проблема заключается в том, что первая буква, которую игрок вводит, заменяет первую черту вместо первой пустой буквы. Это происходит из-за того, что в коде отсутствует проверка на соответствие символа пустой букве. Для решения этой проблемы нужно добавить проверку на то, является ли текущий символ в угадываемом слове пустой буквой (подчеркивание). Если да, то нужно добавить угаданную букву вместо пустой буквы, иначе - добавить текущий символ из old_guess.

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years