При запуске кода на питон, который должен работать как игра виселица возникает проблема, что при нажатии первой, любой буквы стирается одна черточка, которая должна обозначать букву.
Код:
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/5 (1 оценка)
0
fctdgsygfdhngfxzgsac 2 года назад
Светило науки - 23 ответа - 0 раз оказано помощи

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

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

Вот исправленный код для функции check_letter():

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()

Здесь добавлено новое условие if old_guess[i] == '_', чтобы проверить, не была ли черточка уже заменена на эту букву ранее. Если черточка уже была заменена на эту букву, то в new_guess добавляется старая буква, и черточка не удаляется. В противном случае, в new_guess добавляется новая буква, а черточка заменяется на нее.