При запуске кода на питон, который должен работать как игра виселица возникает проблема, что при нажатии первой, любой буквы стирается одна черточка, которая должна обозначать букву.
Код:
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()
Помогите пожалуйста исправить ошибку. Заранее благодарен за помощь!
Answers & Comments
Ответ:
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.