Почему круг превратился в овал, а крыша исчезла? Рисунок проверяется не только на глаз: у каждой фигуры есть координаты и порядок рисования.
Учителю: подготовка и план на 45 минут
Подготовьте компьютер, локальную папку с правом записи, Python/IDLE, распечатку ученической части PDF, бумагу и ручку. Только для уроков 4–5 заранее установите Pillow 10+ командой python -m pip install Pillow; если интерпретатор называется python3, используйте его. Установка учителем до занятия. PNG открываются обычным просмотрщиком, графическое окно Python не требуется. Все программы, входные данные, таблицы и ключи находятся в статье и PDF. Детские аккаунты, сеть и регистрация не нужны.
Уровень — начинающий, 7 класс. Предпосылки: ввод, переменные и последовательность команд. Работа в паре: автор прогнозирует и вводит код, проверяющий ведёт журнал; затем роли меняются. На бумаге трассируйте готовый код и входные данные; для графики используйте координатную сетку и схему. Учитель может показать заранее полученный вывод/PNG. Бумажный вариант проверяет понимание, но не выдаётся за реальный запуск учеником. Чтение, ввод и проверка включены в план. Матрица программы — материал учителя.
| Минуты | Работа | Результат |
|---|---|---|
| 0–5 | Проблема | Вопрос и первое решение |
| 5–14 | Понятия и пример | Способ проверки |
| 14–25 | Практика 1 | Готовый продукт и проверка |
| 25–33 | Практика 2 | Перенос способа |
| 33–40 | Обсуждение | Аргумент и ограничение |
| 40–45 | Индивидуальная проверка | Самостоятельный ответ |
01. Проблемная ситуация
На холсте 160 × 120 ученик задал ellipse((110, 10, 150, 30)). Он ожидал круг. На бумаге отметьте ширину и высоту рамки, предскажите форму и предложите исправление. Затем объясните, почему непрозрачный прямоугольник может закрыть нарисованную раньше линию.
02. Понятия и разобранный пример
5–14 минут: 4 минуты на понятия, 3 на пример, 2 на объяснение способа партнёру.
Примитив и ограничивающая рамка
Pillow рисует на растровом холсте: x растёт вправо, y — вниз. При размере 160 × 120 допустимы x от 0 до 159, y от 0 до 119. Image.new создаёт изображение, ImageDraw.Draw даёт команды рисования. Это внешняя библиотека, а не встроенный модуль Python.
line соединяет точки; rectangle получает левый верхний и правый нижний углы. ellipse рисует эллипс внутри рамки. Если разности x и y одинаковы, рамка квадратная и получается окружность или круг: outline — контур, fill — заливка. В Pillow границы рамки включены; координатная разность 20 соответствует 21 позиции пикселя.
Команды выполняются сверху вниз: более поздняя заливка может закрыть ранний рисунок. Цвета в примере заданы английскими именами. Сохранение в PNG не открывает окно: файл просматривают обычным просмотрщиком.
Отступы набирайте обычными пробелами: 4 на уровень. При копировании с веб-страницы замените неразрывные пробелы обычными; полный код с обычными пробелами есть в PDF.
В примере квадратная рамка (110, 10, 140, 40): обе разности 30. Синий корпус занимает x=20…90, y=50…100; красная линия — y=45. Точки (30,60), (120,25), (10,45) должны иметь соответственно синий, жёлтый и красный цвет.
| from PIL import Image, ImageDraw im = Image.new("RGB", (160, 120), "white") d = ImageDraw.Draw(im) d.rectangle((20, 50, 90, 100), fill="blue") d.ellipse((110, 10, 140, 40), fill="yellow") d.line((10, 45, 100, 45), fill="red", width=1) im.save("station.png") |

03. Практика 1. Проверяем материал
Рисуем условный значок станции
Все команды и координаты даны в примере; работайте в локальной папке lesson4. Сначала заполните три прогнозируемых цвета.
| Элемент | Координаты и проверка |
|---|---|
| Корпус | (20,50)–(90,100); точка (30,60) |
| Круг | рамка (110,10)–(140,40); точка (120,25) |
| Линия | (10,45)–(100,45); точка (10,45) |
Наберите пример, сохраните station.png и откройте его. Отметьте в распечатанной таблице предсказание и результат. Измените только рамку круга на (110,10,150,30), затем восстановите круг с рамкой (110,10,130,30). Сохраните второй файл circle.png. Результат — два файла и объяснение изменения рамки. Критерии: три примитива, квадратная рамка круга, верные контрольные цвета, объяснение порядка команд.
Практика 1: разбор и критерии
Первый файл соответствует примеру. Ошибочная рамка имеет разности 40 и 20, поэтому фигура вытянута. Исправленная рамка даёт разности 20 и 20. Ниже полный вариант для второго файла. По 1 баллу за каждый критерий; красивый рисунок без объяснения рамки не заменяет проверку.
| from PIL import Image, ImageDraw im = Image.new("RGB", (160, 120), "white") d = ImageDraw.Draw(im) d.rectangle((20, 50, 90, 100), fill="blue") d.ellipse((110, 10, 130, 30), fill="yellow") d.line((10, 45, 100, 45), fill="red", width=1) im.save("circle.png") |
04. Практика 2. Перенос способа
Переставляем слои рисунка
Новое условие: горизонтальная красная линия от (10,70) до (100,70) проходит через синий корпус. Самостоятельно создайте layer.png так, чтобы линия была видна поверх корпуса. Используйте круг исходного примера. До запуска запишите ожидаемый цвет точки (30,70); после запуска объясните, что произойдёт при перестановке команд линии и прямоугольника.
Практика 2: разбор и критерии
Линия должна рисоваться после прямоугольника. Точка (30,70) красная; если прямоугольник нарисовать последним, она станет синей. Критерии: рабочий файл, верный порядок, прогноз контрольной точки.
| from PIL import Image, ImageDraw im = Image.new("RGB", (160, 120), "white") d = ImageDraw.Draw(im) d.rectangle((20, 50, 90, 100), fill="blue") d.ellipse((110, 10, 140, 40), fill="yellow") d.line((10, 70, 100, 70), fill="red", width=1) im.save("layer.png") |
05. Обсуждение и границы вывода
Можно ли проверить рисунок только по трём точкам? Сопоставьте эту идею с альтернативой — просмотром всего изображения и проверкой рамок. Приведите пример ошибки, которую контрольные точки не обнаружат.
Обсуждение: возможный вывод
Контрольные пиксели подтверждают только выбранные места. Например, лишняя чёрная точка (159,119) не изменит три проверки. Нужны и контрольные точки, и просмотр общей композиции; рамки помогают объяснить форму.
06. Индивидуальная проверка
Рамка A: (5,5,25,25), рамка Б: (5,5,35,25). Какая даёт круг? Назовите последний допустимый пиксель холста 160 × 120 и цвет (30,70) в layer.png. Критерии: рамка с обоснованием, граница, цвет.
Индивидуальная проверка: ответ и критерии
A: разности 20 и 20. Б — эллипс, разности 30 и 20. Последний пиксель (159,119); (30,70) красный. По 1 баллу за три критерия.
07. Соответствие исходной программе
Пункт программы → действие → результат
| Пункт программы | Действие ученика | Проверяемый результат |
|---|---|---|
| Графические примитивы: линии, прямоугольники, окружности | Создаёт три фигуры в Pillow | PNG и контрольные точки |
| Замкнутые фигуры | Сравнивает квадратную и прямоугольную рамки | Объяснение круга и эллипса |
Источники и права на изображения
Тексты, учебные данные, реплики, программы и схемы подготовлены для уроков портала «Школы России». Числовые серии — учебные модели, не результаты проведённых классом опытов. Схемы авторские, сторонние фотографии не используются. Методические ссылки приведены для учителя; ученик получает все материалы здесь. Проверка первичных источников: 17.10.2026.