Member 13227618 Ответов: 1

Вопрос питона. Введите ответ и получите ответ, который случайным образом задается в списке ответов


Кстати, я использую python 3, но для этого нет тега. То, что я хочу сделать, - это когда пользователь вводит букву, И если буква правильная, то будет автоматический ответ, что она была правильной, однако это не один и тот же ответ каждый раз, когда она правильная. Я хочу, чтобы он поместил список ответов и использовал random.choice, чтобы случайным образом выбрать ответ, который будет показан на правильный ввод.

Мой код до сих пор:
import random

alphabeth = 'abcdefghijklmnopqrstuvwxyz'
rand = ''
blank = []
rand_list = []
guessed_list = []

def prepWord():
    global rand, guessed_list, blank, rand_list
    words = ['note', 'pencil', 'paper','foo']
    rand = random.choice(words)
    guessed_list = []
    blank = ['_']*len(rand)
    rand_list = []
    for letter in rand:
        rand_list.append(letter)
    startPlay()

def startPlay():
    gameQ = input('Play Hangman? y or n --> ')
    if gameQ == 'y':
        print('Guess the letters:')
        print(blank)
        checkAnswer()
    elif gameQ == 'n':
        print('goodbye')

def playAgain():
    again = input('Would you like to play again? y or n --> ')
    if again == 'y':
        prepWord()
    else:
        Print ('Thanks for playing!')

def checkAnswer():
    x = True
    while x:
        answer = input('').lower()
        if answer not in guessed_list:
            guessed_list.append(answer)
            if len(answer)>1:
                print('One letter at a time.')
            elif answer not in alphabeth:
                print('Invalid character, please try again.')
            else:
                if answer in rand:
                    print ("The letter {} is in the word. Good guess!".format(answer))
                    indices = [ndex for ndex, letter in enumerate(rand_list) if letter == answer]
                    for ndex in indices:
                        blank[ndex] = answer
                    print (blank)
                else:
                    print ("I'm sorry the letter {} is not in the word. Please try again.".format(answer))
        else:
            print('Letter {} already used. Try another.'.format(answer))
        if '_' not in blank:
            print('You win!')
            final_word = ''
            for letter in blank:
                final_word += letter
            print(final_word)
            print('')
            x = False
            playAgain()

prepWord()


Что я уже пробовал:

Я составил список ответов и поместил случайную функцию для этого списка
reaction=['good job','lucky guess!',you\'re on a roll]
react=random.choice(reaction)


Я попробовал поместить его после
rand_list.append(letter)
если правильные буквы были угаданы, но каким-то образом он дает только один ответ, потому что он связан со всем словом, он просто выберет другой ответ для другого набора слов. То, что я хотел, - это каждый ввод Буквы в определенное слово, как только он будет правильным, он даст ответ, который не будет таким же, как раньше. Кто-нибудь может мне помочь?

1 Ответов

Рейтинг:
0

Richard MacCutchan

Используйте 9.6. random-генерация псевдослучайных чисел — документация Python 3.6.1[^] функция для генерации случайных чисел. затем вы можете выбрать свой ответ на основе числового значения.