Я создаю викторину, используя файлы json в качестве категорий. Я хотел бы иметь случайные категории и случайные вопросы. Мне уже удалось создать случайные категории, но я до сих пор не могу понять, как создавать вопросы для рисования из файла json.
У меня есть 4 вопроса в моем файле json, и, например, я хотел бы нарисовать 2 из них.
while True:
if len(the_filenames) != 0:
random_section = random.choice(the_filenames)
print()
print("Wylosowano dział:", random_section[:-5])
with open(r"C:\Users\Tymek\PycharmProjects\pythonProject1\quiz!\ematyka\\" + random_section) as file:
questions = json.load(file)
the_filenames.remove(random_section)
i = []
for i in range(0, len(questions)):
show_questions(questions[i])
print("Twój aktualny wynik to:", points, "/", total_points)
if len(the_filenames) == 0:
{"questions": [
{
"pytanie":"Ktore dzialanie wykonamy jako pierwsze?",
"a": "dzielenie",
"b": "odejmowanie",
"c": "dodawanie",
"d": "potęgowanie",
"prawidlowa_odpowiedz":"d"
},
{
"pytanie":"Podaj wynik dzialania 18-9/3*2",
"a": 12,
"b": 6,
"c": 16,
"d": 24,
"prawidlowa_odpowiedz":"a"
},
{
"pytanie":"Ktora z wymienionych nie jest funkcja trygonometryczna?",
"a": "tangens",
"b": "sangens",
"c": "cosinus",
"d": "cotangens",
"prawidlowa_odpowiedz":"b"
},
{
"pytanie":"Suma katow w trojkącie wynosi?",
"a": "160 stopni",
"b": "360 stopni",
"c": "90 stopni",
"d": "180 stopni",
"prawidlowa_odpowiedz":"d"
}
]}






Чтобы показать 2 вопроса из файла, просто замените
for i in range(0, len(questions)):
show_questions(questions[i])
с:
random_questions = random.sample(questions, k=2)
for i in range(0, len(random_questions)):
show_questions(questions[i])
Кстати,
Судя по содержимому файла, которым вы поделились, это выглядит как строка
questions = json.load(file)
нужно было бы
questions = json.load(file)['questions']
чтобы код работал правильно, но, возможно, у вас есть это.
Кроме того, как общий стилистический момент, вам не всегда нужен индекс счетчика при переборе списков.
for i in range(0, len(questions)):
show_questions(questions[i])
эквивалентно
for question in questions:
show_questions(question)
Чтобы избежать дублирования вопросов:
import random
question_pool = [
{
"pytanie":"Ktore dzialanie wykonamy jako pierwsze?",
"a": "dzielenie",
"b": "odejmowanie",
"c": "dodawanie",
"d": "potęgowanie",
"prawidlowa_odpowiedz":"d"
},
{
"pytanie":"Podaj wynik dzialania 18-9/3*2",
"a": 12,
"b": 6,
"c": 16,
"d": 24,
"prawidlowa_odpowiedz":"a"
},
{
"pytanie":"Ktora z wymienionych nie jest funkcja trygonometryczna?",
"a": "tangens",
"b": "sangens",
"c": "cosinus",
"d": "cotangens",
"prawidlowa_odpowiedz":"b"
},
{
"pytanie":"Suma katow w trojkącie wynosi?",
"a": "160 stopni",
"b": "360 stopni",
"c": "90 stopni",
"d": "180 stopni",
"prawidlowa_odpowiedz":"d"
}
]
selected_questions = []
while len(selected_questions) < 2:
selected = random.randrange(len(question_pool))
selected_questions.append(question_pool[selected])
del question_pool[selected]
print(selected_questions)
for i in range(anything): watch_another_python_tutorial;) Удивительно, как много людей пытаются выучить Python, избегая всей его функциональности.