В котором из 300 вопросов система будет на выбор выбирать в случайном порядке 40 вопросов
random.sample()
question_list = random.sample(questions, 40)
который в последующем был записан в log файл
По-простому и записывайте через file.write, как уже заметили, текстом вопрос - ответ.
Для хранения вопросов в текстовом файле можно структурировать
Можно структурировать и хранить данные вопросов в виде словаря и хранить его в json файле, читать тоже будет просто: json.load()
Примерно так:
questions = {
1: {"question": "Как называется программное средство, в котором осуществляются операции по таможенное оформлению?",
"answers": ["АИСТ-М", "ВОРОБЕЙ-У", "ЧАЙКА-П", "СТРАУС-Т"],
"correct": 0},
2: {"question": "Имеет ли право пользователь использовать предоставленные ему ресурсы в личных целях?" ,
"answers": ["Да", "Нет", "Иногда"],
"correct": 1},
...
}
В таком виде у нас каждая запись содержит полные данные в виде словаря: сам вопрос, неограниченный список вариантов ответов, индекс правильного ответа. Какого-то дополнительного класса для работы не требуется, по крайней мере не для того, чтобы связывать вопрос-ответ.
или в базу данных
Можно. Но лучше изучите основы реляционных БД, чтобы создать правильную структуру. Примерно так будет: таблица вопросов, таблица ответов, таблица логов ответов пользователей (только привязка уже будет по идентификаторам таблиц, а не текстами).