Skip to content

kabishev/py-kids

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

py-kids: Обучающий проект по Python для детей

Описание проекта:
Это увлекательный курс по Python для ребёнка, сочетающий теорию, практические упражнения, тесты и домашние задания. Курс завершается мини-проектом — визуализатором алгоритмов (например, демонстрация сортировки или поиска пути в лабиринте). Каждый урок построен по структуре: Теория (основные понятия), Практика (упражнения на коде) и Домашнее задание (самостоятельная работа). Курс развивает логическое мышление, алгоритмику и математические навыки через игры и проекты.

Курс разделён на уроки для последовательного изучения. Рекомендуется проходить 1 урок в неделю, с обсуждением результатов.

📚 Содержание

🚀 Подготовка окружения

Требования

Установка и запуск

  1. Клонируйте репозиторий:

    git clone git@github.com:kabishev/py-kids.git
    cd py-kids
  2. Установите зависимости:

    uv sync --all-extras
  3. Проверьте установку:

    uv run python --version

🧪 Запуск тестов

Каждый урок содержит тесты для проверки решений упражнений.

Запуск тестов для конкретного урока

uv run pytest hours/hour01/test.py -v

Запуск всех тестов в проекте

uv run pytest -v

Расшифровка результатов тестов

  • PASSED ✅ — упражнение решено правильно
  • FAILED ❌ — упражнение имеет ошибку
  • ERROR 🔴 — ошибка в коде (синтаксис, исключение)

📖 Структура курса

Уровень 1: Основы программирования (Уроки 1-7)

Фундаментальные концепции Python: переменные, типы данных, операции, ввод-вывод, условия и функции.

Урок 1: Введение в Python и среду

  • Теория: Что такое программа, переменные, типы данных (int, float, str, bool).
  • Практика: Установить IDE или блокнот; написать программу "Hello, <имя>" и простые вычисления.
  • Домашнее задание: Придумать и записать 5 коротких программ-шуток (сочетая слова и числа).

Урок 2: Операции и выражения

  • Теория: Арифметические операции (+, -, *, /, //, %, **), приоритет операций.
  • Практика: Калькулятор возраста и остаток от деления.
  • Домашнее задание: Программа для перевода минут в часы/минуты с примером.

Урок 3: Ввод/вывод и простая проверка

  • Теория: Функции input(), print(), конвертация типов, простые ошибки.
  • Практика: Программа "приветствие + возраст" и проверка введённого числа.
  • Домашнее задание: Викторина с 3 вопросами (ответы числовые).

Урок 4: Условные операторы (if)

  • Теория: If, else, elif; булева логика (and, or, not).
  • Практика: Программа "проверка чётности", "больше/меньше".
  • Домашнее задание: Игра "угадай число" с подсказками (без цикла, ограниченный ход).

Урок 5: Цикл for и последовательности

  • Теория: Списки, range(), перебор элементов.
  • Практика: Суммирование чисел в списке, вывод таблицы умножения.
  • Домашнее задание: Программа, рисующая текстовую "лесенку" из звёздочек по высоте.

Урок 6: Цикл while и контроль цикла

  • Теория: While, break, continue; защита от бесконечных циклов.
  • Практика: Игра "угадай число" с циклом до победы.
  • Домашнее задание: Симуляция бросков кубика до шестерки, подсчёт попыток.

Урок 7: Функции: ввод и возврат

  • Теория: Def, аргументы, return, локальные переменные.
  • Практика: Функция суммы, функция проверки простоты числа (простой вариант).
  • Домашнее задание: Функция перевода температуры C↔F, с тестами.

Уровень 2: Управление потоком и структуры данных (Уроки 8-11)

Алгоритмическое мышление, углубленное изучение списков, словарей и строк.

Урок 8: Алгоритмическое мышление: пошаговый план

  • Теория: Разбиение задачи, псевдокод, тестовые случаи.
  • Практика: Разбор и кодирование алгоритма (нахождение минимума в списке).
  • Домашнее задание: Псевдокод для бытового действия (например, приготовление бутерброда).

Урок 9: Списки глубже

  • Теория: Методы списков: append, pop, insert, sort, slicing.
  • Практика: Сортировка списка чисел, удаление дубликатов.
  • Домашнее задание: Список оценок: вывести среднее, максимум, минимум.

Урок 10: Словари и множества

  • Теория: Dict (ключи/значения), set и операции над множествами.
  • Практика: Подсчёт букв в слове, телефонная книга.
  • Домашнее задание: Словарь любимых животных семьи, поиск по ключу.

Урок 11: Строки и обработка текста

  • Теория: Методы строк, форматирование, f-строки.
  • Практика: Проверка палиндрома, подсчёт гласных/согласных.
  • Домашнее задание: Программа для шифрования сообщения (шифр Цезаря).

Уровень 3: Алгоритмы и структуры данных (Уроки 12-20)

Классические алгоритмы поиска и сортировки, рекурсия, графы и динамическое программирование.

Урок 12: Введение в алгоритмы: поиск и сортировка (обзор)

  • Теория: Линейный поиск, бинарный поиск, идея сортировки.
  • Практика: Реализация линейного и бинарного поиска (на отсортированном списке).
  • Домашнее задание: Игра "найди предмет на карте" — моделировать поиск в списке.

Урок 13: Сортировки на практике: пузырёк и вставками

  • Теория: Идея пузырьковой сортировки и сортировки вставками, сложность простыми словами.
  • Практика: Реализация обеих сортировок, сравнение шагов на маленьких массивах.
  • Домашнее задание: Замерить сравнения для 5 списков, записать вывод.

Урок 14: Рекурсия — понятие и примеры

  • Теория: Рекурсия, базовый случай, стек вызовов.
  • Практика: Факториал рекурсивно, nth число Фибоначчи (рекурсивно и итеративно).
  • Домашнее задание: Визуализировать рекурсию на бумаге для n=4 (дерево вызовов).

Урок 15: Алгоритмы на графах в простом виде

  • Теория: Граф как связи между объектами, представление списками соседей.
  • Практика: Простейший обход в ширину (BFS) для поиска пути в лабиринте 5×5.
  • Домашнее задание: Нарисовать лабиринт и вручную пройти алгоритм поиска.

Урок 16: Математика: числа и делимость

  • Теория: Делители, НОД, НОК, простые числа, тесты на простоту.
  • Практика: Алгоритм Евклида для НОД, простой тест на простоту.
  • Домашнее задание: Найти простые числа до 100, оформить в список.

Урок 17: Математика: модуль, остатки и свойства

  • Теория: Арифметика по модулю, полезность для шифров и циклов.
  • Практика: Вычисление остатка, проверка циклических свойств (часы).
  • Домашнее задание: Игра "колеса", где числа переходят по модулю N.

Урок 18: Комбинаторика и перебор (пермутации, сочетания)

  • Теория: Перестановки, сочетания, когда применять перебор.
  • Практика: Генерация перестановок 3-элементного списка, проверка уникальности.
  • Домашнее задание: 5 вариантов одежды из 3 рубашек и 2 штанов, вывести программой.

Урок 19: Динамическое программирование — идея

  • Теория: Хранение промежуточных результатов, мемоизация.
  • Практика: Memo-Фибоначчи, подсчёт путей в сетке m×n.
  • Домашнее задание: Посчитать способы добраться по клеткам 3×3.

Урок 20: Алгоритмическая игра: соревнование

  • Теория: Сравнение алгоритмов, критерии простыми словами.
  • Практика: Мини-соревнование: кто быстрее отсортирует наборы.
  • Домашнее задание: Придумать правило оценки, применить к трём примерам.

Уровень 4: Математика и расширенные алгоритмы (Уроки 21-26)

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

Урок 21: Работа с файлами и простые форматы

  • Теория: Чтение/запись текстовых файлов, идея CSV.
  • Практика: Сохранить список оценок в файл, прочитать его.
  • Домашнее задание: "Журнал достижений": сохранить/прочитать программой.

Урок 22: Математика: геометрия в коде

  • Теория: Координаты, расстояние, площадь.
  • Практика: Расстояние между точками, площадь прямоугольника/треугольника.
  • Домашнее задание: Программа для рисования текстовой карты, расчёт расстояний.

Урок 23: Случайность и вероятность в задачах

  • Теория: Генератор случайных чисел, события и вероятность.
  • Практика: Симуляция подбрасывания монеты, эмпирическая вероятность.
  • Домашнее задание: Симуляция броска 2 кубиков, вероятность суммы 7.

Урок 24: Оптимизация простых задач

  • Теория: Сокращение шагов, память vs время.
  • Практика: Улучшить подсчёт суммы уникальных чисел из списка.
  • Домашнее задание: Найти задачу для ускорения, написать план.

Урок 25: Структуры данных: очередь и стек

  • Теория: LIFO и FIFO, применения.
  • Практика: Реализация стека и очереди; валидность скобок.
  • Домашнее задание: Мини-калькулятор обратной польской записи (RPN).

Урок 26: Работа с изображениями простыми средствами (текстовые пиксели)

  • Теория: Изображение как матрица, чтение пикселей.
  • Практика: "Картинка" 10×10 из символов, отражение по горизонтали.
  • Домашнее задание: Нарисовать имя в пикселях, сохранить в файл.

Уровень 5: Проекты и практические приложения (Уроки 27-38)

Мини-проекты: лабиринт, введение в ООП, шифрование, математический тренажёр, графы, анализ сложности и тестирование.

Урок 27: Проект: мини-игра «лабиринт» — планирование

  • Теория: Разбиение на модули, правила игры, логика столкновений.
  • Практика: Поле 10×10, управление игроком через ввод.
  • Домашнее задание: Добавить монеты и счёт, сохранить рекорды в файл.

Урок 28: Проект: лабиринт — алгоритмы поиска пути

  • Теория: Идея A* или упрощённый BFS для кратчайшего пути.
  • Практика: Реализация поиска пути, показ маршрута.
  • Домашнее задание: Придумать 3 уровня сложности, описать их.

Урок 29: Проект: лабиринт — улучшения и интерфейс

  • Теория: Обработка ошибок, проверка границ, интерфейс меню.
  • Практика: Добавить меню, уровни, перезапуск.
  • Домашнее задание: Нарисовать постер уровня, записать правила.

Урок 30: Введение в классы и объекты

  • Теория: Класс, экземпляр, конструктор, атрибуты и методы.
  • Практика: Класс Player для лабиринта, класс Monster.
  • Домашнее задание: Расширить класс Player полями "жизни" и "уровень".

Урок 31: Алгоритмы шифрования и безопасность простыми словами

  • Теория: Симметричные шифры, хеширование в базовой форме.
  • Практика: Простой хеш (сумма кодов), шифр Цезаря с ключом.
  • Домашнее задание: Зашифровать записку, проверить расшифровку.

Урок 32: Комбинированный проект: математический тренажёр

  • Теория: Генерация задач, проверка ответов, адаптация сложности.
  • Практика: Тренажёр для сложения/умножения с уровнями.
  • Домашнее задание: Добавить таблицу рекордов, режим соревнования на время.

Урок 33: Графы: краткие задачи и приложения

  • Теория: Применение графов в социальных связях и маршрутах.
  • Практика: Короткий путь между людьми в маленькой сети.
  • Домашнее задание: Семейное древо как граф, сохранить программой.

Урок 34: Числовые игры: факториалы, комбинации в задачах

  • Теория: Применение факториала и сочетаний.
  • Практика: Количество способов выбрать команду из 5 из 10.
  • Домашнее задание: Игра "сколько комбинаций" с игрушками.

Урок 35: Анализ сложности простых алгоритмов

  • Теория: O(1), O(n), O(n²) на интуитивных примерах.
  • Практика: Измерить время выполнения функций на растущих входах.
  • Домашнее задание: Проанализировать сложность трёх своих программ.

Урок 36: Работа с модулем math и полезными функциями

  • Теория: Sqrt, floor, ceil, факториал, логарифм.
  • Практика: Использовать math для геометрических и комбинаторных задач.
  • Домашнее задание: Проект "расчёт площади игровой зоны" с дробными размерами.

Урок 37: Проектный час: учётник достижений (мини-система)

  • Теория: Сохранение состояния, сериализация через CSV.
  • Практика: Меню добавления/просмотра/удаления достижений.
  • Домашнее задание: Подготовить список достижений, импортировать их.

Урок 38: Тестирование и отладка

  • Теория: Простые тесты, отладочные принты, обработка исключений.
  • Практика: Добавить проверки в один из проектов.
  • Домашнее задание: Баг-чек-лист, прогнать программу по нему.

Уровень 6: Завершающие проекты (Уроки 39-40)

Финальный комплексный проект, объединяющий все полученные знания.

Урок 39: Финальный проект — планирование (математический + алгоритмический)

  • Теория: Объединение знаний: алгоритм, математика, интерфейс.
  • Практика: Выбрать тему (игра-головоломка, тренажёр, лабиринт с монстрами).
  • Домашнее задание: Подробное ТЗ проекта на 1 страницу.

Урок 40: Финальный проект — реализация и презентация

  • Теория: Правила презентации, демонстрация алгоритмов.
  • Практика: Завершение проекта, запись результата, тестирование.
  • Домашнее задание: 3-5 минутная презентация с демонстрацией и описанием алгоритмов.

🎨 Мини-проект: Визуализатор алгоритмов

В конце курса ребёнок создаст программу, визуализирующую алгоритмы (например, анимацию сортировки или поиска пути). Это объединит все навыки: циклы, функции, структуры данных и математику. Используйте текстовый вывод или простые библиотеки (если доступны).

Удачи в обучении! 🚀

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages