惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园_首页
IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
月光博客
月光博客
小众软件
小众软件
S
SegmentFault 最新的问题
量子位
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Тренажёр таблицы умножения на PYQT6
Story-teller · 2026-04-30 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение2 мин

Охват и читатели1K

Кейс

Это ещё один материал посвященный реализации тренажера таблицы умножения на хабре) (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

Общий принцип остался прежний, формируется список примеров с ответами, а дальше можно двигаться двумя путями, или удалять из него элементы, или просто передвигаться по индексу. Я выбрал второй вариант, при нажатии кнопки ответ, индекс смещается на одну позицию, записывается решение, и показывается новый пример.

В целом тренажёр направлен на отработку решения примеров на умножение и деление, можно сформировать примеры по порядку, можно вразброс, можно с накоплением, т.е. если выбрать множитель больше 2х то примеры будут на 2, 3 и до какого числа нужно. Можно задать нужное количество примеров по каждому множителю и перемешать всё. Можно включить таймер (у нас в школе такие примеры решают на время). В конце программы выдаётся список примеров с ответами, где можно посмотреть скорость ответа, и соответственно подтянуть, что плохо идёт.

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

Реализовано всё в одном классе, кстати, если кто-то разбирается в теме, подскажите есть ли смысл разбивать на отдельные блоки? Функциональная структура следующая: отрисовывываем все разметки (layout), всё что не нужно прячем, дальше блок функций, обеспечивающих работу: включение настроек, формирование списка примеров, обеспечение работы кнопок и так далее. Финал – отрисовка итоговой таблицы.

Исходный код можно посмотреть по ссылке: https://gitlab.com/vaaremar/multiplication_train

Файл для win можно найти там же, пользуйтесь на здоровье. Пока писал, основательно повторил умножение на 2, 3 и 4, однозначно упражнение для головы хорошее, не только детям но и взрослым.