@arteem64

Создание теста для опроса пользователей?

В котором из 300 вопросов система будет на выбор выбирать в случайном порядке 40 вопросов, необходимо присутствие заполнение пользователем поля ФИО, далее после прохождения теста на экране нужно что бы отображался результат, который в последующем был записан в log файл или в базу данных( что бы в последующем можно было сделать выборку по пользователям. Можно ли в код прилагаемого файла добавить tkinter? можно ли цеплять вопросы и ответы из текстового файла и рандомизировать их ? заранее благодарен!
import random


question_promts = [ # вопросы и варианты ответов
    "Как называется программное средство, в котором осуществляются операции по таможенное оформлению?"                              #1
    "\n(a) АИСТ-М\n(b) ВОРОБЕЙ-У\n(c) ЧАЙКА-П\n(d) СТРАУС-Т\n\n",
    "Имеет ли право пользователь использовать предоставленные ему ресурсы в личных целях?"                                          #2
    "\n(a) Да\n(b) Нет\n(c) Иногда\n\n",
    "Какие данные необходимы для входа в АИС <АИСТ-М>?"                                                                             #3
    "\n(a) Только логин\n(b) Только пароль\n(c) Логин и пароль\n(d) Без понятия\n\n",
    "Какая ответственность предусмотрена законодательством РФ за нарушения правил работы с конфиденциальной информацией?"           #4
    "\n(a) Уголовная\n(b) Административная\n(c) Оба варианта верны\n\n",
    "Допускается сообщать пароль для доступа к ключевым носителям, содержащим действующие ключи ЭП, "                               #5
    "и используемым для подписания  документов?"
    "\n(a) Без понятия\n(b) Сотрудникам службы технической поддержки\n(c) Работникам департаментов"                                 #6
    "\n(d) Ничего из вышеперечисленного. Пароль запрещается разглашать другим лицам\n\n"
]

class Question:
    def __init__(self, vopros, otvet):
        self.vopros = vopros
        self.otvet = otvet

questions = [ # правильные ответы
    Question(question_promts[0], 'a'),
    Question(question_promts[1], 'b'),
    Question(question_promts[2], 'c'),
    Question(question_promts[3], 'c'),
    Question(question_promts[4], 'd')
]

random.shuffle(questions) # рандомайзер вопросов

def run_test(questions):
    score = 0
    for question in questions:
        otvet = input(question.vopros)
        if otvet == question.otvet:
            score += 1
    print('Тест завершен. Введите ФИО')
    user_name = input()
    print("У вас " + str(score) + " ответов из " + str(len(questions)) + " верны!")



run_test(questions)
  • Вопрос задан
  • 476 просмотров
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Можно ли в код прилагаемого файла добавить tkinter?

Можно

можно ли цеплять вопросы и ответы из текстового файла и рандомизировать их ?

Можно
Ответ написан
@o5a
В котором из 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},
...
}

В таком виде у нас каждая запись содержит полные данные в виде словаря: сам вопрос, неограниченный список вариантов ответов, индекс правильного ответа. Какого-то дополнительного класса для работы не требуется, по крайней мере не для того, чтобы связывать вопрос-ответ.
или в базу данных

Можно. Но лучше изучите основы реляционных БД, чтобы создать правильную структуру. Примерно так будет: таблица вопросов, таблица ответов, таблица логов ответов пользователей (только привязка уже будет по идентификаторам таблиц, а не текстами).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы