Предмет: Информатика, автор: vhorsuns

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

Ответы

Автор ответа: pupkinll2016
0

Ответ:

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.

Похожие вопросы
Предмет: Психология, автор: rozyyevayasminka