Описание проекта:
Это увлекательный курс по Python для ребёнка, сочетающий теорию, практические упражнения, тесты и домашние задания. Курс завершается мини-проектом — визуализатором алгоритмов (например, демонстрация сортировки или поиска пути в лабиринте). Каждый урок построен по структуре: Теория (основные понятия), Практика (упражнения на коде) и Домашнее задание (самостоятельная работа). Курс развивает логическое мышление, алгоритмику и математические навыки через игры и проекты.
Курс разделён на уроки для последовательного изучения. Рекомендуется проходить 1 урок в неделю, с обсуждением результатов.
- 🚀 Подготовка окружения
- 🧪 Запуск тестов
- 📖 Структура курса
- Уровень 1: Основы программирования (Уроки 1-7)
- Уровень 2: Управление потоком и структуры данных (Уроки 8-11)
- Уровень 3: Алгоритмы и структуры данных (Уроки 12-20)
- Уровень 4: Математика и расширенные алгоритмы (Уроки 21-26)
- Уровень 5: Проекты и практические приложения (Уроки 27-38)
- Уровень 6: Завершающие проекты (Уроки 39-40)
- Python 3.14 или выше
uv— современный менеджер пакетов Python (установить:brew install uvили из официального репозитория)
-
Клонируйте репозиторий:
git clone git@github.com:kabishev/py-kids.git cd py-kids -
Установите зависимости:
uv sync --all-extras
-
Проверьте установку:
uv run python --version
Каждый урок содержит тесты для проверки решений упражнений.
uv run pytest hours/hour01/test.py -vuv run pytest -vPASSED✅ — упражнение решено правильноFAILED❌ — упражнение имеет ошибкуERROR🔴 — ошибка в коде (синтаксис, исключение)
Фундаментальные концепции Python: переменные, типы данных, операции, ввод-вывод, условия и функции.
- Теория: Что такое программа, переменные, типы данных (int, float, str, bool).
- Практика: Установить IDE или блокнот; написать программу "Hello, <имя>" и простые вычисления.
- Домашнее задание: Придумать и записать 5 коротких программ-шуток (сочетая слова и числа).
- Теория: Арифметические операции (+, -, *, /, //, %, **), приоритет операций.
- Практика: Калькулятор возраста и остаток от деления.
- Домашнее задание: Программа для перевода минут в часы/минуты с примером.
- Теория: Функции input(), print(), конвертация типов, простые ошибки.
- Практика: Программа "приветствие + возраст" и проверка введённого числа.
- Домашнее задание: Викторина с 3 вопросами (ответы числовые).
- Теория: If, else, elif; булева логика (and, or, not).
- Практика: Программа "проверка чётности", "больше/меньше".
- Домашнее задание: Игра "угадай число" с подсказками (без цикла, ограниченный ход).
- Теория: Списки, range(), перебор элементов.
- Практика: Суммирование чисел в списке, вывод таблицы умножения.
- Домашнее задание: Программа, рисующая текстовую "лесенку" из звёздочек по высоте.
- Теория: While, break, continue; защита от бесконечных циклов.
- Практика: Игра "угадай число" с циклом до победы.
- Домашнее задание: Симуляция бросков кубика до шестерки, подсчёт попыток.
- Теория: Def, аргументы, return, локальные переменные.
- Практика: Функция суммы, функция проверки простоты числа (простой вариант).
- Домашнее задание: Функция перевода температуры C↔F, с тестами.
Алгоритмическое мышление, углубленное изучение списков, словарей и строк.
- Теория: Разбиение задачи, псевдокод, тестовые случаи.
- Практика: Разбор и кодирование алгоритма (нахождение минимума в списке).
- Домашнее задание: Псевдокод для бытового действия (например, приготовление бутерброда).
- Теория: Методы списков: append, pop, insert, sort, slicing.
- Практика: Сортировка списка чисел, удаление дубликатов.
- Домашнее задание: Список оценок: вывести среднее, максимум, минимум.
- Теория: Dict (ключи/значения), set и операции над множествами.
- Практика: Подсчёт букв в слове, телефонная книга.
- Домашнее задание: Словарь любимых животных семьи, поиск по ключу.
- Теория: Методы строк, форматирование, f-строки.
- Практика: Проверка палиндрома, подсчёт гласных/согласных.
- Домашнее задание: Программа для шифрования сообщения (шифр Цезаря).
Классические алгоритмы поиска и сортировки, рекурсия, графы и динамическое программирование.
- Теория: Линейный поиск, бинарный поиск, идея сортировки.
- Практика: Реализация линейного и бинарного поиска (на отсортированном списке).
- Домашнее задание: Игра "найди предмет на карте" — моделировать поиск в списке.
- Теория: Идея пузырьковой сортировки и сортировки вставками, сложность простыми словами.
- Практика: Реализация обеих сортировок, сравнение шагов на маленьких массивах.
- Домашнее задание: Замерить сравнения для 5 списков, записать вывод.
- Теория: Рекурсия, базовый случай, стек вызовов.
- Практика: Факториал рекурсивно, nth число Фибоначчи (рекурсивно и итеративно).
- Домашнее задание: Визуализировать рекурсию на бумаге для n=4 (дерево вызовов).
- Теория: Граф как связи между объектами, представление списками соседей.
- Практика: Простейший обход в ширину (BFS) для поиска пути в лабиринте 5×5.
- Домашнее задание: Нарисовать лабиринт и вручную пройти алгоритм поиска.
- Теория: Делители, НОД, НОК, простые числа, тесты на простоту.
- Практика: Алгоритм Евклида для НОД, простой тест на простоту.
- Домашнее задание: Найти простые числа до 100, оформить в список.
- Теория: Арифметика по модулю, полезность для шифров и циклов.
- Практика: Вычисление остатка, проверка циклических свойств (часы).
- Домашнее задание: Игра "колеса", где числа переходят по модулю N.
- Теория: Перестановки, сочетания, когда применять перебор.
- Практика: Генерация перестановок 3-элементного списка, проверка уникальности.
- Домашнее задание: 5 вариантов одежды из 3 рубашек и 2 штанов, вывести программой.
- Теория: Хранение промежуточных результатов, мемоизация.
- Практика: Memo-Фибоначчи, подсчёт путей в сетке m×n.
- Домашнее задание: Посчитать способы добраться по клеткам 3×3.
- Теория: Сравнение алгоритмов, критерии простыми словами.
- Практика: Мини-соревнование: кто быстрее отсортирует наборы.
- Домашнее задание: Придумать правило оценки, применить к трём примерам.
Работа с файлами, геометрия, вероятность, оптимизация, структуры данных и обработка изображений.
- Теория: Чтение/запись текстовых файлов, идея CSV.
- Практика: Сохранить список оценок в файл, прочитать его.
- Домашнее задание: "Журнал достижений": сохранить/прочитать программой.
- Теория: Координаты, расстояние, площадь.
- Практика: Расстояние между точками, площадь прямоугольника/треугольника.
- Домашнее задание: Программа для рисования текстовой карты, расчёт расстояний.
- Теория: Генератор случайных чисел, события и вероятность.
- Практика: Симуляция подбрасывания монеты, эмпирическая вероятность.
- Домашнее задание: Симуляция броска 2 кубиков, вероятность суммы 7.
- Теория: Сокращение шагов, память vs время.
- Практика: Улучшить подсчёт суммы уникальных чисел из списка.
- Домашнее задание: Найти задачу для ускорения, написать план.
- Теория: LIFO и FIFO, применения.
- Практика: Реализация стека и очереди; валидность скобок.
- Домашнее задание: Мини-калькулятор обратной польской записи (RPN).
- Теория: Изображение как матрица, чтение пикселей.
- Практика: "Картинка" 10×10 из символов, отражение по горизонтали.
- Домашнее задание: Нарисовать имя в пикселях, сохранить в файл.
Мини-проекты: лабиринт, введение в ООП, шифрование, математический тренажёр, графы, анализ сложности и тестирование.
- Теория: Разбиение на модули, правила игры, логика столкновений.
- Практика: Поле 10×10, управление игроком через ввод.
- Домашнее задание: Добавить монеты и счёт, сохранить рекорды в файл.
- Теория: Идея A* или упрощённый BFS для кратчайшего пути.
- Практика: Реализация поиска пути, показ маршрута.
- Домашнее задание: Придумать 3 уровня сложности, описать их.
- Теория: Обработка ошибок, проверка границ, интерфейс меню.
- Практика: Добавить меню, уровни, перезапуск.
- Домашнее задание: Нарисовать постер уровня, записать правила.
- Теория: Класс, экземпляр, конструктор, атрибуты и методы.
- Практика: Класс Player для лабиринта, класс Monster.
- Домашнее задание: Расширить класс Player полями "жизни" и "уровень".
- Теория: Симметричные шифры, хеширование в базовой форме.
- Практика: Простой хеш (сумма кодов), шифр Цезаря с ключом.
- Домашнее задание: Зашифровать записку, проверить расшифровку.
- Теория: Генерация задач, проверка ответов, адаптация сложности.
- Практика: Тренажёр для сложения/умножения с уровнями.
- Домашнее задание: Добавить таблицу рекордов, режим соревнования на время.
- Теория: Применение графов в социальных связях и маршрутах.
- Практика: Короткий путь между людьми в маленькой сети.
- Домашнее задание: Семейное древо как граф, сохранить программой.
- Теория: Применение факториала и сочетаний.
- Практика: Количество способов выбрать команду из 5 из 10.
- Домашнее задание: Игра "сколько комбинаций" с игрушками.
- Теория: O(1), O(n), O(n²) на интуитивных примерах.
- Практика: Измерить время выполнения функций на растущих входах.
- Домашнее задание: Проанализировать сложность трёх своих программ.
- Теория: Sqrt, floor, ceil, факториал, логарифм.
- Практика: Использовать math для геометрических и комбинаторных задач.
- Домашнее задание: Проект "расчёт площади игровой зоны" с дробными размерами.
- Теория: Сохранение состояния, сериализация через CSV.
- Практика: Меню добавления/просмотра/удаления достижений.
- Домашнее задание: Подготовить список достижений, импортировать их.
- Теория: Простые тесты, отладочные принты, обработка исключений.
- Практика: Добавить проверки в один из проектов.
- Домашнее задание: Баг-чек-лист, прогнать программу по нему.
Финальный комплексный проект, объединяющий все полученные знания.
- Теория: Объединение знаний: алгоритм, математика, интерфейс.
- Практика: Выбрать тему (игра-головоломка, тренажёр, лабиринт с монстрами).
- Домашнее задание: Подробное ТЗ проекта на 1 страницу.
- Теория: Правила презентации, демонстрация алгоритмов.
- Практика: Завершение проекта, запись результата, тестирование.
- Домашнее задание: 3-5 минутная презентация с демонстрацией и описанием алгоритмов.
В конце курса ребёнок создаст программу, визуализирующую алгоритмы (например, анимацию сортировки или поиска пути). Это объединит все навыки: циклы, функции, структуры данных и математику. Используйте текстовый вывод или простые библиотеки (если доступны).
Удачи в обучении! 🚀