Тренажёр таблицы умножения на PYQT6

Страницы:  1

Ответить
 

Professor Seleznov


Это ещё один материал посвященный реализации тренажера таблицы умножения на хабре) (1, 2), правда реализованного в качестве десктопного приложения на PYQT6. Кода там много, и в целом каких-то интересных загвоздок в нём нет, в конце статьи ссылка на репозиторий, можно всё посмотреть своими глазами.
Пожалуй, самое интересное в этой программе было то, что сперва я написал консольную версию, где в цикле выдавались примеры, и отвечающий вводил ответы через input. PYQT сам по себе цикл, и логику исполнения нужно было перестраивать.

Скрытый текст

def show_exxes(exercises, limit=None):
random.shuffle(exercises)
stat = []
for part in exercises[:limit]:
#clear_terminal()
start_part = datetime.now()
answ = input(f"{part.exercise} ")
count = 1
while answ != part.product:
print("\U0000274C")
answ = input(f"{part.exercise} ")
count += 1
if count > 1:
print(f"\U00002705 количество попыток {count}")
else:
print("\U00002705")
end_part = datetime.now()
elapsed = end_part - start_part
stat.append([part.exercise, count, elapsed.seconds])
return stat
Общий принцип остался прежний, формируется список примеров с ответами, а дальше можно двигаться двумя путями, или удалять из него элементы, или просто передвигаться по индексу. Я выбрал второй вариант, при нажатии кнопки ответ, индекс смещается на одну позицию, записывается решение, и показывается новый пример.
pic
В целом тренажёр направлен на отработку решения примеров на умножение и деление, можно сформировать примеры по порядку, можно вразброс, можно с накоплением, т.е. если выбрать множитель больше 2х то примеры будут на 2, 3 и до какого числа нужно. Можно задать нужное количество примеров по каждому множителю и перемешать всё. Можно включить таймер (у нас в школе такие примеры решают на время). В конце программы выдаётся список примеров с ответами, где можно посмотреть скорость ответа, и соответственно подтянуть, что плохо идёт.
pic
В целом логика была такая: сперва ребёнок проходит умножение по порядку, потом вперемешку с делением (и все примеры), потом с накоплением, и после этого тренирует уже скорость. Лично у меня очень азартно получается игра кто первый крикнет ответ.
Реализовано всё в одном классе, кстати, если кто-то разбирается в теме, подскажите есть ли смысл разбивать на отдельные блоки? Функциональная структура следующая: отрисовывываем все разметки (layout), всё что не нужно прячем, дальше блок функций, обеспечивающих работу: включение настроек, формирование списка примеров, обеспечение работы кнопок и так далее. Финал – отрисовка итоговой таблицы.
Исходный код можно посмотреть по ссылке: https://gitlab.com/vaaremar/multiplication_train
Файл для win тут можно найти там же, пользуйтесь на здоровье. Пока писал, основательно повторил умножение на 2, 3 и 4, однозначно упражнение для головы хорошее, не только детям но и взрослым.-Источник
 
Loading...
Error