#python #input #console #user-input
Вопрос:
Я пытаюсь понять, как я могу заставить консоль «запомнить», что пользователь ввел в консоль для моей игры «палач». Например, если слово «дерево» выбрано из созданной мной строки слов hangman, если пользователь вводит букву «r», я хочу, чтобы консоль запомнила этот ввод и продолжала печатать его на консоли каждый раз, когда пользователь вводит букву, до окончания сеанса. Я хочу, чтобы консоль повторно напечатала » -r — -«, если пользователь вводит «r», в то время как пользователь может найти другие буквы в слове. Я хочу, чтобы то же самое произошло, если пользователь также введет букву «т» или «е»: «- р е е». Спасибо, извините, если я прошу слишком многого, я не могу найти ответ на этот вопрос.
Вот мой код:
#hangman mini-project
import random
import string
import time
letters = string.ascii_letters
lettertree = ['a', 'b', 'c', 'd', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 's', 'u', 'v', 'w', 'x', 'y', 'z']
hangmanwords = ['tree','sun']
sunchoices = ['s _ _', '_ u _', '_ _ n']
treechoices = ['t _ _ _', '_ r _ _', ' _ _ e _', '_ _ _ e']
lettercount = [0]
gameWinTree = False
gameWinSun = False
limbCount = 5
hangmanword = random.choice(hangmanwords)
correct = hangmanword
if hangmanword == "sun":
print (random.choice(sunchoices))
if hangmanword == "tree":
print (random.choice(treechoices))
if letters == "r":
print("Nice! You guessed one letter from the word")
if letters == "e":
print("Wow! You guessed two letters from the word, if you wish, you can guess the word")
while True:
letters = input("Please enter a letter to guess the word")
if letters == correct:
input("Correct! The word was " correct ". Press enter to play again.")
time.sleep(1)
break
if letters == correct:
gameWinTree == true
if gameWinTree == true:
time.sleep(1)
break
print("The letter that you chose was " letters)
if letters == "r":
print("Nice! You guessed one letter from the word!n t r _ _")
if letters == "e":
print("Wow! You guessed two letters from the word!n t _ e e")
if letters == correct:
print("Correct! The word was tree!")
if letters == lettertree:
print("Sorry, that's not a correct letter, feel free to try again.")
limbCount -=1
if limbCount == 0:
print("Unfortunately, you are out of tries, better luck next time!")
time.sleep(1)
exit()
Извините, если мой код кажется небрежным, я только начинаю изучать Python после изучения других языков программирования.
Комментарии:
1. Просто для уточнения; вы хотели бы сохранить список букв, которые игрок уже угадал, верно?
2. Да, извините, если это было неясно
3. Для букв, которые не угаданы, я хочу, чтобы символ подчеркивания был заполнителем этой буквы. Я только что понял, что если я наберу подчеркивание, оно выделит текст курсивом
Ответ №1:
Вот как я бы построил строку, которую вы ищете. Когда игрок угадывает букву, я бы хранил ее в наборе, называемом guesses
. Если он находится в наборе букв в слове «называется correct
«, то я эффективно добавляю его в пересечение этих наборов «называется correct_guesses
«. Затем я повторяю слово и распечатываю каждую букву в строке-заполнителе, заменяя ее символом подчеркивания, если этой буквы нет correct_guesses
. Вот как это будет выглядеть в коде:
word = 'tree'
guesses = set()
correct = set(list(word))
correct_guesses = set()
while correct_guesses != correct:
# Get input
guess = input("Guess: ")
guesses.add(guess)
correct_guesses = guesses.intersection(correct)
# Print word status
placeholder = ' '.join(['%s' for _ in word])
print(placeholder % tuple([l if l in correct_guesses else '-' for l in word]))
print("You've guessed: " ", ".join(guesses))
Дайте мне знать, если этот код не работает для вас или если он нуждается в дополнительных объяснениях.
Комментарии:
1. Спасибо, это сработало!