Я только что написал работающую программу для игры в Hangman, но меня беспокоит одна проблема, которую я не смог выяснить.
Программа правильно определяет, присутствует ли выбранный персонаж в слове. быть угаданным, а также его положение в слове (даже если символ появляется более одного раза). Тем не менее, когда вы играете в игру, требуется на один ход больше, чем нужно, чтобы оценить, полностью ли вы угадали слово, или у вас не осталось жизней.
Скажем, к примеру, вам нужно угадать слово "привет" , Я ожидаю, что программа будет работать так:
Поворот 1: 'h'. Поворот 2: «е». Поворот 3: «Я». Поворот 4: «о». Программа должна остановиться здесь, но ей нужен другой персонаж (любой), чтобы признать, что игра завершена.
Вот мой код:
def play_game():
# Pick word randomly from list
random_num = random.randint(0, (len(words_list) - 1))
current_word = list(words_list[random_num].upper())
print(current_word)
print('The word has', str(len(current_word)), 'characters')
current_letter = input('Pick a letter: ').upper() #User input
picked_letters = []
correct_ones = []
for i in range(len(current_word)):
correct_ones.append('_ ')
lifes = 3
while lifes != 0:
# Check if all characters have been already guessed
if current_word == correct_ones:
print('You won!')
break
# Check if character has already been chosen
elif current_letter in picked_letters:
print('You already chose this letter!')
current_letter = input('Pick another letter: ').upper()
continue
# Check if character is in word
if current_letter in current_word:
index_list = []
for i in range(len(current_word)): #Get indexes of character in word
if current_word[i] == current_letter:
index_list.append(i)
picked_letters.append(current_letter) #Append to keep track of chosen characters
for i in index_list:
correct_ones[i] = current_letter.upper() #Append to correct position
print('Correct!')
for i in correct_ones:
print(i + ' ', end='')
current_letter = input('Pick another letter: ').upper()
# Incorrect character
else:
picked_letters.append(current_letter)
lifes -= 1
print('Incorrect')
print('You have', str(lifes), 'lifes left')
current_letter = input('Pick another letter: ').upper()
continue
play_game()
Если вы видите какую-либо плохую практику в моем код не стесняйтесь сказать мне об этом!
Заранее спасибо!