#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: ')