Лучшая идея о том, как обновить строку для игры палача - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь сделать игру палача на Python 2, и я верю в то, как я пытаюсь сохранить информацию, которую пользователь знает о слове (например, если они угадали "v" и "a"и письмо было баклажаном," информация ", на которую я ссылаюсь, это" ----- a-- ", которую увидит пользователь). Итак, мой вопрос заключается в следующем: Каков более эффективный способ хранения изменяемой переменной, которая будет легко обновляться, например, как я хочу, чтобы она была?

secret_word = 'tracy'
dashes = ""

def get_guess():
    while True:
        guess = input("Guess: ")
        if len(guess) != 1:
            print "Your guess must be exactly one character!"
        elif not guess.islower():
            print "Your guess must be a lowercase letter!"
        else:
            break
    return guess

def update_dashes(secret_word, dashes, guess):
    for letter in secret_word:
        if letter == guess:
            dashes += guess
        else:
            dashes += "-"
    return dashes


while True:
    if guess in secret_word:
        print "That letter is in the secret word!"
        dashes = update_dashes(secret_word, dashes, get_guess())
    else:
        print "That letter is not in the secret word!"

Часть, которая потребует обновленияскорее всего, функция update_dashes. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 ноября 2019

Вместо того, чтобы хранить состояние игры в строке вида --a--, вы можете рассмотреть возможность использования list . Каждая запись в списке может представлять букву и ее статус. В приведенном ниже примере список логических значений используется для хранения информации о том, была ли раскрыта каждая буква в секретном слове.

secret_word = 'tracy'
revealed_letters = [False] * len(secret_word)  # all letters start off as not revealed

def make_guess(guessed_letter):
    any_letter_revealed = False
    for i in range(len(secret_word)):
        secret_letter = secret_word[i]
        if secret_letter == guessed_letter:
            any_letter_revealed = True
            revealed_letters[i] = True
    return any_letter_revealed


def get_hidden_word():
    return ''.join([secret_word[i] if revealed_letters[i] else '-' for i in range(len(secret_word))])


while True:
    print(get_hidden_word())
    guess = raw_input("Guess a letter: ")
    if make_guess(guess):
        print("That letter is in the secret word!")
    else:
        print("That letter is not in the secret word.")
    if all(revealed_letters):
        print("You win! The secret word was:")
        print(secret_word)
        break
...