Как вывести указанную c букву в строке для Python? - PullRequest
1 голос
/ 10 марта 2020

Я учусь в средней школе и в настоящее время учу себя Python. Я программирую Hangman, и пока все идет хорошо (пока он не очень организован), но у меня проблема. Я создал список слов, которые я буду использовать в игре, и заменил их звездочками, используя функцию диапазона. Вот код для этого:

words = ['utopia', 'prosecute', 'delirious', 'superficial', 'fowl', 'abhorrent', 'divergent', 
         'noxious', 'scarce','lavish', 'hinder', 'onerous', 'colossal', 'infringe']

picked_words = random.choice(words)

for i in range(len(picked_words)):
    print(picked_words.replace(picked_words,'*'), end = '')

Я нахожусь в точке, где я угадываю буквы, и мне нужно медленно раскрывать положение определенных букв. Я пытался найти определенные функции (я даже думал, что функция find () будет работать, поскольку она печатает расположение буквы в строке, но это не так), и я в растерянности. Особенно для слов с кратными одинаковыми буквами, таких как «обременительный» и «нарушать». Я напишу код, который у меня есть для этого раздела:

def right_letter(correct):
   if correct == True:
       print("There are {} {}'s.".format(number_of_char, guess))
       for x in range(len(picked_words)):
           print(picked_words.replace(picked_words,guess, #find way to fill in specific letters),end = '')

Я понятия не имею, какие части кода необходимы для получения ответа, но мой код действительно неорганизован, потому что я не знаю правильного техники пока нет. Часть, которая говорит для x в диапазоне (len (selected_words)) ... ... 1008 *, где у меня проблемы. Остальная часть кода работала нормально, прежде чем я добавил оператор печати под ним. В основном я спрашиваю, как изменить определенный символ или указать c символов и поместить их на место. Например, если рандомизированное слово было «нарушением» и первое предположение было «i», как я могу go из ******** в i *** i ***?

Кроме того, на случай, если кому-то будет интересно, что я изначально думал, что решение было ...

picked_words[(picked_words.find(guess))]

Я думал, что оно упростится и станет pick_words [index]

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вот пример преобразования вашего кода в игру палача.

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

import random

def hangman():
    words = ['utopia', 'prosecute', 'delirious', 'superficial', 'fowl', 'abhorrent', 'divergent', 
'noxious', 'scarce','lavish', 'hinder', 'onerous', 'colossal', 'infringe']

    max_guesses = 5
    word = random.choice(words)
    guesses = 0
    display = "*" * len(word)
    print(display, " Is the word")
    while guesses < max_guesses:
        letter = input("Please Enter Your guess letter: ")
        if letter.lower() not in word:
            guesses += 1
            print("You got it incorrect, you have: ", max_guesses - guesses , " Additional    trials")
        else:
            print("Right guess!")
            new_display = ''
            for w, l in zip(word, display):
                if letter.lower() == w:
                    new_display += letter.lower()
                else:
                    new_display += l
            display = new_display
            print(display)
            if not '*' in display:
                print("You won!")
                return

hangman()
0 голосов
/ 10 марта 2020

По сути, вам нужно найти частичное совпадение между вашим письмом и словом здесь. Самый простой способ, о котором я могу думать, это Pythons in Operator. Его можно использовать следующим образом:

if picked_letter in picked words

% here you need to figure out at which position(s) the letter in your word occurs 
% and then replace the * at the correct positions. A nice way to do this is 
% the use of regular expressions 

picked_words = re.sub('[^[^picked_letter]*$]', '*', picked_words)

%this will replace every letter in your word with the Asterisk except for the one picked


else

%do Nothing

Обратите внимание, что выполнение этого кода в al oop заменит каждый символ в вашей строке, кроме выбранного, КАЖДЫЙ раз. Поэтому, вероятно, лучше всего создать свой selected_letter как список, содержащий все символы, которые были выбраны до сих пор. Это также облегчает проверку того, было ли уже введено письмо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...