• При запуске кода на питон, который должен работать как игра виселица возникает проблема, что при нажатии первой, любой буквы стирается одна черточка, которая должна обозначать букву. Код: 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

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

    фикс кода: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] and old_guess[i] == '_':

               new_guess += letter.lower()

               found = True

           else:

               new_guess += old_guess[i]

       if not found:

           error_count += 1

           if error_count == 10:

               print("Ты проиграл!")

           else:

               draw_hangman()

       else:

           word_label.config(text=new_guess)

           if new_guess == guessed_word:

               print("Ты победил!")

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

Еще вопросы

Войти через Google

или

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

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

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