Для задания мне нужно написать основную игру HANGMAN. Все это работает, кроме этой части ...Назначение HANGMAN python
Игра должна напечатать одно из этих символов подчеркивания («_») для каждой буквы, которая есть в тайном слове; а затем догадки пользователя (правильные) письма, они будут помещены в.
EG
Предполагая, что слово было "слово"
Пользователь угадывает "W"
W _ _ _
Пользователь угадывает "D"
W _ _ D
Однако во многих случаях некоторые подчеркивания будут пропадают после того, как пользователь сделал несколько предположений, так что в конечном итоге выглядит как:
W _ D
вместо:
W _ _ D
я не могу работать, какая часть моего кода делает это произошло. Любая помощь будет оценена! Ура!
Вот мой код:
import random
choice = None
list = ["HANGMAN", "ASSIGNEMENT", "PYTHON", "SCHOOL", "PROGRAMMING", "CODING", "CHALLENGE"]
while choice != "0":
print('''
******************
Welcome to Hangman
******************
Please select a menu option:
0 - Exit
1 - Enter a new list of words
2 - Play Game
''')
choice= input("Enter you choice: ")
if choice == "0":
print("Exiting the program...")
elif choice =="1":
list = []
x = 0
while x != 5:
word = str(input("Enter a new word to put in the list: "))
list.append(word)
word = word.upper()
x += 1
elif choice == "2":
word = random.choice(list)
word = word.upper()
hidden_word = " _ " * len(word)
lives = 6
guessed = []
while lives != 0 and hidden_word != word:
print("\n******************************")
print("The word is")
print(hidden_word)
print("\nThere are", len(word), "letters in this word")
print("So far the letters you have guessed are: ")
print(' '.join(guessed))
print("\n You have", lives,"lives remaining")
guess = input("\n Guess a letter: \n")
guess = guess.upper()
if len(guess) > 1:
guess = input("\n You can only guess one letter at a time!\n Try again: ")
guess = guess.upper()
while guess in guessed:
print("\n You have already guessed that letter!")
guess = input("\n Please take another guess: ")
guess = guess.upper()
guessed.append(guess)
if guess in word:
print("*******************************")
print("Well done!", guess.upper(),"is in the word")
word_so_far = ""
for i in range (len(word)):
if guess == str(word[i]):
word_so_far += guess
else:
word_so_far += hidden_word[i]
hidden_word = word_so_far
else:
print("************************")
print("Sorry, but", guess, "is not in the word")
lives -= 1
if lives == 0:
print("GAME OVER! You ahve no lives left")
else:
print("\n CONGRATULATIONS! You have guessed the word")
print("The word was", word)
print("\nThank you for playing Hangman")
else:
choice = input("\n That is not a valid option! Please try again!\n Choice: ")
Вы никогда не должны этого делать: 'list = [" HANGMAN ",]'. Таким образом, 'list' не следует переопределять. – shuttle87
@ shuttle87 Хорошо ... Спасибо за подсказку, но это то, что вызывает проблему или нет? – M01
Проблема заключается в том, что вы изменяете '' 'hidden_word''' /' '' word_so_far'''. Один метод устранения неполадок заключается в том, чтобы написать несколько строк кода, которые просто делают то, с чем у вас возникла проблема, и работать над ним отдельно, пока вы не работаете. Вы уже узнали о функциях? – wwii