Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
2 / 2 / 0
Регистрация: 01.11.2022
Сообщений: 23

Программа тестирования базовых знаний по математике

03.01.2023, 21:04. Показов 2554. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер!
Учусь на первом курсе техникума, и так получилось, что пришлось взять проект по предмету "информатика". Весь нюанс в том, что целью моего проекта должен являться продукт (полностью работающая программа), написанный на Python. Есть какие-нибудь советы для написания программного кода? Чтобы итоговый результат был по типу квиз-теста, который выводит какой-то пример, и требует с пользователя ввод ответа. Причём вся программа должна держаться на каком-то конкретном интерфейсе, и не важно - простом или сложном.
Дело в том, что особо понятий в языке я не знаю, но проект должен быть готов к маю месяца. Понятное дело, никто не будет делать за меня всю работу, но я готов приложить все силы на то, чтобы понять правила и алгоритм написания такой программы. Создал данную тему, чтобы попросить у знатоков какой-то помощи, абсолютно любой, которая поможет мне успешно написать программу.
Буду безгранично благодарен!!!
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.01.2023, 21:04
Ответы с готовыми решениями:

Программа тестирования знаний
Здравствуйте, Уважаемые. Пишу программку тестирования знаний для средних классов пожалуйста посмотрите код и подскажите что не так...

Программа тестирования знаний
Здравствуйте! Нужна программа тестирования знаний на с++ , консолька... как, например, в книге Лаптева В. "экспресс курс" на...

Программа тестирования знаний
Вот часть задачи , с которой не могу разобраться 1. В текстовый файл надо записать вопросы, и 4 варианта ответа. 2. надо реализовать...

10
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
03.01.2023, 21:31
1) берешь книгу по питону для начинающих, за неделю ты ее прочтешь и освоишь
2) потом ваяешь свои первые наброски для консольной версии своей программы, выкладываешь тут за критикой и советами
3) когда она готова, оставляешь логику и вместо консоли прицеляешь графический интерфейс, типа ткинтера
4) профит

к 15 марта управишься
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.01.2023, 21:36
А мне вот прям понравилось, как ТС создал тему. Вот честно, без иронии.
Vxnxl, если хочешь, могу набросать тебе скелет. Все равно делать нех
2
2 / 2 / 0
Регистрация: 01.11.2022
Сообщений: 23
03.01.2023, 21:50  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
А мне вот прям понравилось, как ТС создал тему. Вот честно, без иронии.
Vxnxl, если хочешь, могу набросать тебе скелет. Все равно делать нех
Если есть возможность, и ты написал это без сарказма, то прошу тебя помочь мне с этим не лёгким для меня делом (0-o)

Добавлено через 1 минуту
Цитата Сообщение от Welemir1 Посмотреть сообщение
1) берешь книгу по питону для начинающих, за неделю ты ее прочтешь и освоишь
2) потом ваяешь свои первые наброски для консольной версии своей программы, выкладываешь тут за критикой и советами
3) когда она готова, оставляешь логику и вместо консоли прицеляешь графический интерфейс, типа ткинтера
4) профит

к 15 марта управишься
Благодарю за довольно раскрытый способ вникнуть в ЯП и суметь что-то написать
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.01.2023, 22:00
Vxnxl, опиши подробно - как ты себе представляешь сию прогу. Весь юзкейс (взаимодействие с пользователем) от и до. Что и как показывается (вопросы/варианты ответов), что и куда вводится, как отвечать, как учитывать, как выводить результат и т.д.
Максимально подробно.

Добавлено через 3 минуты
Сразу говорю - на убогом ткинтере писать не буду.
0
2 / 2 / 0
Регистрация: 01.11.2022
Сообщений: 23
03.01.2023, 22:57  [ТС]
Хорошо.
Начнём с того, что взаимодействия с пользователем не должно по идее быть. То есть, при запуске программы необходимо, чтобы она имела какое-то вступление:

"Вас встречает программа тестирования базовых знаний средней школы по математике. В ней вы пройдёте несколько заданий, и в результате программа подсчитает процент ваших знаний."

Сразу же программа выводит кнопку ("Приступить"), после чего пересылает пользователя на первое задание.

Я рассчитываю на 10 заданий, которые будут по темам:

1. Одночлены (ответ пользователя будет по типу - 2ab2)
2. Свойства степеней с натуральным показателем (просто числовой ответ)
3. Линейное уравнение с одной переменной (в ответе пользователь должен будет указать верный корень такого уравнения)

Каждое отдельное задание должно запрашивать ответ на поставленный приложением вопрос...
Например,
Программа: "Корень числа 15?" (предусматриваю, чтобы корень обозначался символом, а не словом)
Ввод пользователя: "225"

Причём не важно - правильно ответит пользователь или нет. Программа перейдёт на следующее задание, сохранив ответ на предыдущий. Ведь для того, чтобы оценить точное владение материалом математики за среднюю школу, нужно дать один шанс, в конце которого выведется общий процент знаний пользователя, рассчитанный по правильным и неправильным ответам за задания. Возможности вернуться к какому-то заданию не должно быть, чтобы ученик выделил себе на ответ один шанс.

После ответа на последнее задание программа подсчитывает сколько правильных и неправильных ответов (выводит пользователю их количество для ознакомления), после чего подсчитывает отношение и выводит итоговый процент. К примеру, 5 успешно выполненных заданий из 10, будут являться 50% от всех 10 заданий.

Чтобы программа не получалась объёмной, я не предполагаю в ней наличие возможности просмотра заданий, на которых ответил пользователь, даже после подсчёта процента усвоенного материала. Пользователь не сможет посмотреть на свои уже зафиксированные ответы на каком-то определённом задании.

К слову, я не представляю как это будет выглядеть в консольной версии, но представляя программу с наличием интерфейса вся задумка более менее укладывается в голове.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
04.01.2023, 08:58
Цитата Сообщение от Vxnxl Посмотреть сообщение
Корень числа 15?
Цитата Сообщение от Vxnxl Посмотреть сообщение
Ввод пользователя: "225"
Ответ системы: "Дядя Петя, ты дурак? Не путаешь ли квадрат с квадратным корнем?"
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.01.2023, 08:59
Catstail, внести в ТЗ?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
04.01.2023, 09:14
Vxnxl, Предлагаемые тобой вопросы в тестирующую систему слишком "пресны". Вот мое предложение:

Написать программу, которая проверяла бы умение работать с полиномами от одной переменной. Пример:

Вопрос системы: Чему равно произведение (3x^2+5)*(x^3-5x^2+7x-1)
Правильный ответ: 3x^5-15x^4+26x^3-28x^2+35x-5

и т.д.

Если не боишься, могу помочь... При условии, что сначала выполнишь то, что предложили уважаемые Welemir1 и iSmokeJC.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.01.2023, 10:16
Лучший ответ Сообщение было отмечено Vxnxl как решение

Решение

Вотъ, накидал. Проще уже некуда наверно
code
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from random import shuffle
 
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton, QGroupBox, QRadioButton, QMessageBox
 
 
class Window(QDialog):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Easy quizzy')
        self.setFixedSize(200, 200)
 
        self.next_btn = QPushButton('Next')
        self.next_btn.clicked.connect(self.click)
 
        self.answer_edit = QLineEdit()
        self.quest_lbl = QLabel()
        self.mainLayout = QVBoxLayout()
        self.manual = True
 
        self.box1 = QGroupBox('Your answer:')
        self.lay1 = QVBoxLayout()
        self.lay1.addWidget(self.answer_edit)
        self.box1.setLayout(self.lay1)
 
        self.box2 = QGroupBox('Your answer:')
        self.lay2 = QVBoxLayout()
        self.btns = []
        for i in range(4):
            btn = QRadioButton(f'{i + 1}')
            self.btns.append(btn)
            self.lay2.addWidget(btn)
        self.btns[0].setChecked(True)
        self.box2.setLayout(self.lay2)
 
        self.mainLayout.addWidget(self.quest_lbl)
        self.mainLayout.addWidget(self.box1)
        self.mainLayout.addWidget(self.box2)
        self.box2.setVisible(False)
        self.mainLayout.addWidget(self.next_btn)
        self.setLayout(self.mainLayout)
 
        self.questions = dict()
        self.load_questions()
        self.right_answer = ''
        self.idx = -1
        self.total = 0
        self.qs = list(self.questions.keys())
        shuffle(self.qs)
 
        QMessageBox.information(self, 'Easy quizzy', 'Welcome to Easy Quizzy testing!')
        self.next_()
 
    def next_(self):
        self.idx += 1
        if self.idx == len(self.qs):
            QMessageBox.information(self, 'Results', f'Right answers: {self.total}')
            self.close()
        self.answer_edit.setText('')
        self.quest_lbl.setText(self.qs[self.idx])
        if type(self.questions[self.qs[self.idx]]) == str:
            self.manual = True
            self.box2.setVisible(False)
            self.box1.setVisible(True)
            self.right_answer = self.questions[self.qs[self.idx]]
        else:
            self.manual = False
            self.box1.setVisible(False)
            self.box2.setVisible(True)
            tmp = self.questions[self.qs[self.idx]][0]
            items = self.questions[self.qs[self.idx]]
            shuffle(items)
            self.right_answer = items.index(tmp)
            for i, e in enumerate(items):
                self.btns[i].setText(e)
 
    def click(self):
        if self.manual:
            if self.answer_edit.text() == self.right_answer:
                self.total += 1
        else:
            if self.check() == self.right_answer:
                self.total += 1
        self.next_()
 
    def check(self):
        for i, btn in enumerate(self.btns):
            if btn.isChecked():
                return i
 
    def load_questions(self):
        try:
            with open('quest.txt', 'r', encoding='utf-8') as f:
                lines = f.read().split('\n')
                for i in range(0, len(lines), 2):
                    tmp = lines[i]
                    if tmp.startswith('*'):
                        self.questions[lines[i][1:]] = lines[i + 1].split()
                    else:
                        self.questions[lines[i]] = lines[i + 1]
        except FileNotFoundError:
            print('Error loading quest.txt')
            self.close()
 
 
app = QApplication([])
w = Window()
w.show()
app.exec_()

файл с вопросами
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Сколько будет 2+2 ?
4
Сколько будет 3+2 ?
5
Сколько будет 4+2 ?
6
Сколько будет 5+2 ?
7
Сколько будет 6+2 ?
8
*Сколько будет 12+2 ?
14 3 2 1
*Сколько будет 13+2 ?
15 3 2 1
*Сколько будет 14+2 ?
16 3 2 1
*Сколько будет 15+2 ?
17 3 2 1
*Сколько будет 16+2 ?
18 3 2 1

Формат файла -
вопрос (строка)
правильный_ответ (строка)
Если вопрос начинается со звездочки, значит с готовыми вариантами ответов, через пробел. Первый ответ - правильный.
*вопрос
ответ1 ответ2 ответ3 ответ4
screenshots


Vxnxl, Дальше все в руках твоей фантазии )))
4
2 / 2 / 0
Регистрация: 01.11.2022
Сообщений: 23
04.01.2023, 11:21  [ТС]
Верно подметил незамеченную мной ошибку, спасибо огромное

Пользователю iSmokeJC
Вааа, спасибо тебе большое, действительно то, что я планировал. Всё же пойду почитаю питон для чайников и может подкорректирую что-нибудь. На связи

Пользователю Catstail
Да, я выполню все рекомендованные действия для освоения ЯПа. А вот что касается пресноты программы, то я рассчитываю на то, чтобы итоговый вариант ответа на каждое задание не был каким-то длинным выражением, а являлся просто числовым значением. Но если есть идеи, как это воссоздать в консольной версии и в версии с наличием интерфейса, то помоги пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2023, 11:21
Помогаю со студенческими работами здесь

Программа тестирования знаний
Доброго времени суток, тема курсовой работы разработать программу оценки знаний студента. т.е сделать обычный тест, в котором указывается...

Программа тестирования знаний
исходный код программы тестирования знаний учащихся

Программа тестирования знаний
Люди,хэлп!:cry: мне нужно сделать программу тестирования знаний, только при этом ответы к каждому вопросу должны каждый раз выдаваться в...

Программа тестирования знаний
Здравствуйте, ищу программу тестирования знаний, с возможностью студенту пройти тест, админу(преподу) редактировать тесты. Это тема моей...

Программа тестирования знаний
Каким образом можно реализовать запись фамилии, имени и результатов пользователя в TXT/WORD документ? И может быть посоветуете, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru