Федеральный портал школ России
Закрыть

Урок 7. Python: Подготовка данных и осей

18.10.2026 - Андрей -

  • Учебные программы
  • Информатика

Программирование на Python и C++ · 9 класс

Урок 7 из 34 · 45 минут · Модуль «Графики»

Уровень: начинающий программист; Python 3.

Вся программа курса

Между измерениями прошло сначала 1, затем 3 минуты. Если расставить точки на равных расстояниях, история опыта изменится. Сначала проверим данные и зададим честные оси.

Результат урока: Проверить пары времени и значения, сохранить неравные интервалы и построить оси с заданными единицами и границами.
Учителю: подготовка и план на 45 минут

Подготовьте компьютер, редактор, папку с правом записи, распечатку ученической части PDF, бумагу и ручку. Python 3.11+ и IDLE или редактор; запуск python lesson.py (либо python3 lesson.py). Заранее установите Matplotlib командой python -m pip install matplotlib. Код проверен с Matplotlib 3.10.8; графическое окно не требуется, используется Agg. PNG открывайте обычным просмотрщиком. Установку и проверку запуска учитель выполняет заранее. Все программы, данные и ожидаемые ответы даны; регистрация детей и интернет на занятии не нужны.

Уровень — начинающий программист, 9 класс. Предпосылки: списки, пары чисел, функции, исключения; чтение шкалы графика. В паре автор прогнозирует и вводит код, проверяющий ведёт журнал, затем роли меняются. Без компьютера выполните трассировку полного кода на бумаге и сопоставьте с готовыми результатами; учитель демонстрирует подготовленный запуск. Бумажный вариант не считается фактическим запуском ученика. Перед практикой учитель выдаёт готовый файл разобранного примера, чтобы дети тратили время на изменение и проверку, а не длинное перепечатывание. Матрица программы предназначена учителю.

МинутыРаботаРезультат
0–5ПроблемаВопрос и первое решение
5–14Понятия и примерСпособ проверки
14–25Практика 1Готовый продукт и проверка
25–33Практика 2Перенос способа
33–40ОбсуждениеАргумент и ограничение
40–45Индивидуальная проверкаСамостоятельный ответ

01. Проблемная ситуация

0–5 минут. Даны учебные пары (t, h): (0,2), (1,4), (4,8), где t в минутах, h в сантиметрах. Нарисуйте только горизонтальную ось 0…4 и отметьте времена. Сравните расстояния 0→1 и 1→4. Почему три равноотстоящие отметки не подходят?

02. Понятия и разобранный пример

5–14 минут: 4 минуты на понятия, 3 на пример, 2 на объяснение способа партнёру.

Сначала контракт данных

Контракт: список до 20 пар целых чисел; 0<=t<=4, 0<=h<=10. Время строго возрастает: одинаковые и убывающие времена отклоняются. Проверки типов здесь не выполняются: пары целых чисел — предпосылка. Пустая серия допустима и означает отсутствие наблюдений, а не высоту 0.

Шкала переводит физическую величину в положение. На линейной оси интервал 3 минуты занимает втрое больше места, чем 1 минута. Нумерация записей 0,1,2 не заменяет времена 0,1,4. В Matplotlib set_xlim/set_ylim задают границы; set_xticks/set_yticks задают отметки, а подписи сообщают единицы.

В этом уроке файл axes.png содержит только подготовленные оси. Точки и линия появятся на следующем занятии. Проверяем программу в двух слоях: допустимость исходной серии и параметры рисунка. Обработка ошибочного входа завершается до создания нового графического файла. Работайте в отдельной учебной папке.

Отступы набирайте обычными пробелами: 4 на уровень. При копировании с веб-страницы замените неразрывные пробелы обычными; полный код с обычными пробелами есть в PDF.

Для (0,2),(1,4),(4,8) проверки проходят: времена 0<1<4, значения в диапазоне. Функция возвращает два списка [0,1,4] и [2,4,8]. Оси: t от 0 до 4, h от 0 до 10, шаги отметок 1 минута и 2 сантиметра.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

def prepare(rows):
    if len(rows) > 20:
        raise ValueError("too many rows")
    for i, (t, h) in enumerate(rows):
        if not (0 <= t <= 4 and 0 <= h <= 10):
            raise ValueError("range")
        if i and t <= rows[i-1][0]:
            raise ValueError("time order")
    return [p[0] for p in rows], [p[1] for p in rows]

rows = [(0,2), (1,4), (4,8)]
x, y = prepare(rows)
print(x, y)
fig, ax = plt.subplots(figsize=(6,4))
ax.set(xlim=(0,4), ylim=(0,10),
       xlabel="t, min", ylabel="h, cm")
ax.set_xticks(range(5))
ax.set_yticks(range(0,11,2))
ax.grid(True)
fig.tight_layout()
fig.savefig("axes.png", dpi=150)
plt.close(fig)
Подготовленная координатная сетка: неравные интервалы времени сохраняют масштаб.
Подготовленная координатная сетка: неравные интервалы времени сохраняют масштаб.

03. Практика 1. Проверяем материал

Проверяем допустимость серии

14–25 минут. В готовом примере заменяйте rows каждой из шести серий таблицы. Перед запуском запишите прогноз.

СерияОжидаемая проверка
[(0,2),(1,4),(4,8)]Принять
[]; [(4,10)]Принять обе
[(1,2),(1,3)]Ошибка time order
[(2,4),(1,5)]; [(0,11)]Ошибки time order; range

2 минуты — прогноз, 4 — запуски, 3 — проверка осей axes.png, 2 — журнал. Форма: серия / принято или ошибка / границы и единицы. Критерии: шесть верных исходов, различение пустоты и нуля, отсутствие автоматической сортировки времени.

Практика 1: разбор и критерии

Основная серия, пустота и одна крайняя точка допустимы. Повтор и обратный порядок времени нарушают строгое возрастание. Высота 11 вне границ. Пустой вход даёт [] [] и такие же пустые оси; на рисунке нет придуманной точки (0,0). Для ошибочного входа новый axes.png не создаётся; старый файл от прежнего запуска сам не удаляется.

04. Практика 2. Перенос способа

Меняем единицы, сохраняя смысл

25–33 минуты. Переведите времена в секунды: (0,2),(60,4),(240,8). За 2 минуты вычислите новые границы, за 4 измените только временные проверки и ось, за 2 сравните с прежним файлом. Форма: три изменения кода и объяснение неизменности высот. Критерии: предел 240, отметки через 60, подпись t, s.

Практика 2: разбор и критерии

В prepare замените 0<=t<=4 на 0<=t<=240; задайте xlim=(0,240), xlabel="t, s", set_xticks(range(0,241,60)). Присвойте rows=[(0,2),(60,4),(240,8)]. Остальные строки сохраняются. Списки x=[0,60,240], y=[2,4,8]. Геометрическое соотношение временных интервалов остаётся 1:3.

05. Обсуждение и границы вывода

33–40 минут. Сравните предложения «автоматически отсортировать времена» и «сообщить об ошибке». За 2 минуты приведите пример нарушения, за 3 обсудите потерю информации о порядке, за 2 сформулируйте правило текущего контракта.

Обсуждение: возможный вывод

Наш контракт требует исходный хронологический порядок. Автосортировка скрывает возможную ошибку ввода. В другом проекте сортировка допустима как явно описанный этап, но пары должны переставляться целиком. Раздельная сортировка x и y разрушает соответствие измерений.

06. Индивидуальная проверка

40–45 минут. Серия [(0,0),(2,6),(4,10)]: назовите границы двух осей, интервалы времени, допустимость крайней высоты и отличие от []. Четыре пункта по одному баллу.

Индивидуальная проверка: ответ и критерии

t: 0…4, h: 0…10; интервалы 2 и 2 минуты; 10 допустимо, граница включена; [] означает отсутствие измерений, а (0,0) — одно измерение нулевой высоты.

07. Соответствие исходной программе

Пункт программы → действие → результат
Пункт программыДействие ученикаПроверяемый результат
Библиотеки рисования графиков (марафон)Проверяем допустимость серииПроверить пары времени и значения, сохранить неравные интервалы и построить оси с заданными единицами и границами.
Структурирование решения и отладкаМеняем единицы, сохраняя смыслИсходник, журнал обычных и граничных тестов; индивидуальный ответ
Источники и права на изображения

Тексты, учебные данные, реплики, программы и схемы подготовлены для уроков портала «Школы России». Числовые серии — учебные модели, не результаты проведённых классом опытов. Схемы авторские, сторонние фотографии не используются. Методические ссылки приведены для учителя; ученик получает все материалы здесь. Проверка первичных источников: 18.10.2026.