Создание функции для печати другого вопроса на основе заданного аргумента

#python

#python

Вопрос:

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

Я хотел, чтобы вопрос печатался так, как если бы они были напечатаны, например:

 In=list("What is your name? ")
for x in In:
    print(x, end='')
    stdout.flush()
    time.sleep(0.1)

print("n")
 

Затем я подумал, могу ли я создать функцию, которая могла бы печатать правильный вопрос из переменной, содержащей список вопросов, на основе аргумента, заданного функции. Если заданный аргумент равен «1», он будет печатать вопрос 1 и так далее… Мне все время приходится возвращаться к функциям, я нахожу их одними из самых запутанных.

Я попробовал приведенный ниже код, думая, что, возможно, списки в списках, но затем он печатает оба вопроса. Мне нужен способ идентифицировать только один «элемент» из переменной.

 import time
from sys import stdout

def ask_question():
    for list in list_questions:
        for item in list:
            for x in item:
                print(x, end='')
                stdout.flush()
                time.sleep(0.1)


list_questions = [["What is your name?"], ["What is your age? "]]
 

Вопросы, которые мне интересны (и будут рассмотрены после сна, но я подумал, что все равно поставлю здесь):

Можно ли здесь использовать что-то другое, кроме списка? Строки можно повторять, будет ли их каким-то образом проще использовать для этого?

Как вы идентифицируете список внутри списка? Является ли приведенный ниже формат для строк?

 print(list_questions[0,1])
 

Можно ли использовать словарь?

Есть ли совершенно другой, лучший способ сделать все это?

Если у кого-то есть много свободного времени и желания просмотреть всю текстовую игру (есть много, много проблем, которые нужно найти), не стесняйтесь:

https://github.com/hyperblue1356/Radiant_text_game/blob/main/code

Ответ №1:

Вы можете создать dict, содержащий все вопросы, связанные с переменными.

 questionsdict = {1: "What is your name?", 2: "What is your age?"}
 

Затем вы можете перебирать символы, чтобы создать эффект ввода, который вы предполагаете.

 for char in questionsdict[question_no]:
    print(char, end="")
    time.sleep(0.1)
 

Чтобы обернуть все это в функцию, вам нужна функция, которая принимает значение, относящееся к вопросу.

 import time

def ask_question(question_no):
    questionsdict = {1: "What is your name?", 2: "What is your age?"}
    for char in questionsdict[question_no]:
        print(char, end="")
        time.sleep(0.1)
 

Затем вы можете позвонить ask_question(1) или ask_question(2) получить распечатанный любой из двух вопросов.

Ответ №2:

Я думаю, вам следует начать с этого:

 import time
from sys import stdout

def ask_question(q):
    for c in q:
         print(c, end='')
         stdout.flush()
         time.sleep(0.1)
    return input()


i = ask_question("What is your name? ")
print(i)
 

Это обрабатывает строку текста вопроса как итерацию, которая печатается «медленно».

Вам просто нужно подумать о том, чтобы иметь список вопросов:

 list_questions = ["What is your name? ", "What is your age? "]

i = ask_question(list_questions[1])
print(i)
 

Ответ №3:

Я предполагаю, что вы новичок в функциях, так что поехали:

Здесь я создал список, содержащий несколько вопросов, и функцию ask(n), где n — аргумент, который принимает индекс списка и выводит вопрос, связанный с этим индексом.

 ques=['whats your name?','your age?','your fav food','your country']
def ask(n):
    print(ques[n])
    x=input('Answer: ') 
 

Чтобы быть более конкретным, вы также можете использовать словарь для хранения вопросов. На этот раз, если мы вызовем функцию ask с 1 в качестве параметра «ask(1)«, то будет поднято значение, связанное с 1, которое является «как вас зовут» в словаре вопросов.

 ques={1:'whats your name?',2:'your age?',3:'your fav food',4:'your country'}
def ask(n):
    print(ques[n])
    x=input('Answer: ')  
 

Вы также можете задать случайный вопрос из своего банка вопросов, используя random.randint()

 import random
ques={1:'whats your name?',2:'your age?',3:'your fav food',4:'your country'}
def ask():
    n=random.randint(1,4)
    print(ques[n])
    x=input('Answer: ')