Кодируем простую игру Hangman - ищем способ заполнить пробелы - PullRequest
1 голос
/ 20 апреля 2020

В настоящее время я пишу очень простую игру-палач, чтобы попасть в Python и программировать в целом. Ниже вы можете найти то, что я уже сделал. На этом этапе мой код может выбрать слово из списка с именем «word_pool» в произвольном порядке, затем отобразить его с пробелами вместо букв (например, «котенок» превращается в «_ _ _ _ _») и затем проверить, если предположение пользователя в слове. Это уже отлично работает.

У меня проблемы с заменой пробелов, если предположение верно. Допустим, слово «котенок», и пользователь угадывает «t», я хочу, чтобы слово encoded_word было изменено на «_ _ tt _». Это то, что я пытался сделать с помощью цикла for; Я позволю себе перебирать каждый символ слова и, если он соответствует, заменить его в закодированном слове. Причина в том, что в кодированном слове i * 2-1, заключается в том, что между символами подчеркивания есть пробелы. Затем я пытаюсь напечатать закодированное слово, чтобы увидеть, сработало ли оно, но оно просто печатает подчеркивание с пробелами между ними. Почему ничего не заменено?

import random

word_pool = ["kitty", "dog", "teeth", "sitting"]

print("Guess the word!")
word = word_pool[random.randint(0, len(word_pool)-1)].upper()
print(word)
encoded_word = "_ "*len(word)
print(encoded_word)
guess = input("Which letter do you want to guess? ").upper()

if guess in word:
    print(f"Yes, {guess} is correct!")
    for i in range(0, len(word)):
        if word[i] == guess:
            encoded_word.replace(encoded_word[i*2-1], guess, 1)
            print(encoded_word)
else:
    print(f"No, {guess} isn't correct!")

1 Ответ

2 голосов
/ 20 апреля 2020

Вдохновленный Изменяя один символ в строке в Python, я изменил ваш кодированный string на список, потому что строки в python неизменны. Для более подробной информации см. Вопрос выше. Теперь я могу просто изменить букву на своей позиции.

Кроме того, я заменил range на enumerate, потому что его лучше и больше pythoni c. Я не уверен, если вы действительно хотите напечатать результат после каждой замены или после замены всех букв.

Я закомментировал случайную часть и пользовательский ввод для более быстрого выполнения и тестирования.

import random

word_pool = ["kitty", "dog", "teeth", "sitting"]

print("Guess the word!")
word = word_pool[0]  # word_pool[random.randint(0, len(word_pool)-1)].upper()
print(word)
encoded_word = ["_"] * len(word)
print(" ".join(encoded_word))
guess = "t"  # input("Which letter do you want to guess? ").upper()

if guess in word:
    print(f"Yes, {guess} is correct!")
    for i, letter in enumerate(word):
        if letter == guess:
            encoded_word[i] = guess

    print(" ".join(encoded_word))
else:
    print(f"No, {guess} isn't correct!")

Вывод:

Guess the word!
kitty
_ _ _ _ _
Yes, t is correct!
_ _ t t _
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...