PythonTutor 2.0 Новый pythontutor: каждый шаг программы — на экране
Новая версия классического задачника: 704 задачи вместо прежнего курса, Python 3.12 вместо 2.7 и визуализатор, который работает прямо в браузере. Проверяйте решение на открытых и скрытых тестах, а если что-то пошло не так — разберите программу по шагам и посмотрите, что происходит с переменными.
s = 0for i in range(1, 4):s += iprint(i, s)print("итого", s)
Записанный пример: потяните ползунок. В PythonTutor 2.0 так разбирается ваша собственная программа — прямо в браузере.
Что нового в PythonTutor 2.0
Классический pythontutor.ru — это версия 1.0: школьный задачник Д. П. Кириенко и визуализатор на сервере. Во второй версии задачник сохранён, а всё вокруг него сделано заново.
PythonTutor 2.0
новая версия- 704 задачи в трёх курсах: к школьным темам добавлены «Символы и коды ASCII» и «Алгоритмы», подборка олимпиадных задач и 21 параграф задач из учебника Полякова
- Python 3.12 вместо 2.7: f-строки, распаковка и современные сообщения об ошибках — с объяснением по-русски
- Скрытые тесты у каждой задачи: решение, подогнанное под пример из условия, больше не проходит
- Визуализатор в браузере: трасса строится на вашем компьютере без очереди к серверу, матрицы и словари рисуются таблицами
- Навигация как в классике: курсы, разделы и задачи — столбиком слева, решённые отмечены галочкой, а прогресс сохраняется сам
- Работает без сети после первой загрузки — интерпретатор остаётся в кэше браузера
pythontutor.ru (версия 1.0)
классика- Каждый запуск — запрос к серверу: код уходит туда, выполняется там и возвращается трассой
- Python 2.7 и Django 1.x; проект давно не обновляется и временами недоступен
- Нет скрытых тестов и объяснения ошибок на языке школьника
- Если сайт не открывается или школьная сеть режет соединения — заниматься нельзя
PythonTutor 2.0 делает ПедОбраз на основе открытых материалов курса Д. П. Кириенко (лицензия CC BY-NC-SA 3.0) и репозитория pythontutor-ru; с авторами pythontutor.ru проект не связан.
Как устроена работа
Выберите задачу
Слева — курсы, разделы и задачи столбиком, как в классическом pythontutor. Рядом условие с примерами ввода и вывода и теория раздела, где любой пример можно сразу разобрать по шагам.
Напишите код
Редактор с подсветкой Python, автоотступами и подсказками. Черновик сохраняется сам: можно закрыть вкладку и вернуться к задаче завтра.
Проверьте на тестах
Кнопка «Проверить» прогоняет программу по открытым и скрытым тестам. Видно, сколько тестов пройдено и какие упали. Все тесты зелёные — задача решена и отмечается галочкой в списке.
Разберите по шагам
Тест не прошёл? Кнопка «Разобрать этот тест по шагам» запускает программу на том самом вводе. Видно, какая строка выполняется, как меняются переменные, списки и стек вызовов, — ошибка находится глазами, а не угадыванием.
Почему разбор по шагам работает лучше лекции
На лекции программа выполняется в голове у учителя. Здесь — у ученика перед глазами, и её можно отмотать назад.
Видно то, что обычно невидимо
Переменная — не буква на доске, а ячейка, которая меняется. Визуализатор показывает её значение до и после каждой строки, и «присваивание» перестаёт быть абстракцией.
Назад можно отмотать
Ползунок шагов работает в обе стороны: пропустили момент, когда s стало равно 6, — шаг назад. Лекцию так не перемотаешь, а свою программу — пожалуйста.
Списки и матрицы — картинкой
Список рисуется рядом ячеек с индексами, двумерный список — таблицей, словарь — парами «ключ → значение». Ячейки, изменившиеся на шаге, вспыхивают: видно, куда «уехал» индекс.
Рекурсия без магии
Каждый вызов функции — отдельный кадр в стеке со своими переменными. Можно сосчитать, сколько раз вызвалась fib(), и проследить, как значения возвращаются обратно.
Ошибка — это подсказка
IndexError и ZeroDivisionError объясняются по-русски и с номером строки, а визуализатор останавливается ровно на том шаге, где возникла ошибка.
Своя скорость
Никто не торопит: каждый шаг можно рассматривать сколько угодно. Тот, кто на уроке стеснялся переспросить, здесь переспрашивает программу.
Задачи, где визуализатор особенно нужен
Заполнение спиралью
Раздел «Двумерные массивы», школьный курс. Заполнить матрицу n × m числами по спирали от левого верхнего угла — индексы начинают путаться уже на втором витке.
- Двумерные списки
- Четыре направления обхода
- Матрица заполняется на глазах
Числа Фибоначчи
Раздел «Функции и рекурсия», школьный курс. Вернуть n-е число Фибоначчи без единого цикла: решение в несколько строк, а вызовов — десятки.
- Рекурсивная функция
- Базовый случай
- Стек вызовов кадр за кадром
Путь в лабиринте
Задачи Полякова, § 67 «Матрицы». Найти длину кратчайшего пути из левого верхнего угла в правый нижний — итоговая задача для тех, кто дошёл до обхода в ширину.
- Матрицы
- Очередь и обход в ширину
- Скрытые тесты с тупиками
Калькулятор со скобками
Задачи Полякова, § 66 «Символьные строки». Вычислить выражение, записанное строкой: целые числа, четыре действия и скобки любой вложенности.
- Разбор строки по символам
- Приоритет операций
- Рекурсия или стек — на выбор
Три решения против четырёх тестов
Такие ответы и приходят от класса. Выберите решение и посмотрите, какие тесты оно переживёт: открытые видно сразу, скрытые выдают себя только вердиктом.
Стенд проверки требует JavaScript. Сам тренажёр с редактором кода и автопроверкой открывается кнопкой ниже.
Здесь вердикты заранее записаны — стенд показывает логику проверки, а не выполняет Python. В самом тренажёре код ученика по-настоящему исполняется у него в браузере.
Для кого
Ученикам 7–11 классов
Тем, кто начал текстовое программирование и хочет понимать код, а не переписывать его с доски.
- check_circleШкольный курс от print() до словарей
- check_circleОшибки объясняются по-русски
- check_circleПрогресс хранится в браузере
Учителям информатики
Тем, кто хочет показать классу, что происходит внутри программы, а не объяснять это мелом.
- check_circleВизуализатор для разбора у доски
- check_circleГотовые задачи с тестами по темам
- check_circleКлассы и журнал — в PythonTeaching
Олимпиадникам
Тем, кому школьного курса уже мало.
- check_circleПодборка олимпиадных задач
- check_circleСкрытые тесты на граничные случаи
- check_circleРазбор до 400 шагов
Готовящимся к ЕГЭ
Задачи 24–27 решают на Python, и привычка проверять крайние случаи там окупается баллами.
- check_circleСтроки, массивы, сортировки
- check_circleГрафы и динамическое программирование
- check_circleСкрытые тесты ловят «почти верные» решения
Попробовать быстрее, чем дочитать. Ниже подробности для любопытных: куда (не) уходит ваш код, ответы на частые вопросы и на чьих материалах сделан PythonTutor 2.0.
Открыть PythonTutor 2.0 arrow_forwardДанные и разрешения
PythonTutor 2.0 запускает ваш код — поэтому первым делом отвечаем, куда этот код попадает.
-
Код не покидает компьютер
Python (Pyodide — CPython 3.12 в WebAssembly) работает в отдельном фоновом потоке вашего браузера. Программа, ввод и результаты тестов на сервер не отправляются: сервер только раздаёт файлы.
-
Всё с нашего домена
Интерпретатор, шрифты и картинки раздаются с app.педобраз.рф. Никаких CDN и чужих шрифтов в тренажёре нет — третьим лицам по этому каналу ничего не передаётся (152-ФЗ).
-
Прогресс — в вашем браузере
Черновики, решённые задачи и «Билет на перемену» лежат в localStorage вашего браузера. Ни имени, ни почты, ни учётной записи: очистите данные сайта — и всё исчезнет.
-
Статистика — после согласия
Счётчик посещений включается только после кнопки «Принять» и считает открытия страницы, а не содержимое программ. Рекламы внутри тренажёра нет.
Подробно о том, что и зачем собирает портал, — в политике обработки персональных данных; отозвать согласие можно в настройках приватности.
Часто задаваемые вопросы
Чем PythonTutor 2.0 отличается от pythontutor.ru? expand_more
Это официальное продолжение pythontutor.ru? expand_more
Нужно ли регистрироваться? expand_more
Куда отправляется мой код? expand_more
Что будет, если программа зациклится? expand_more
Сколько шагов покажет визуализатор? expand_more
С какого класса подходит? expand_more
Это бесплатно? expand_more
Благодарности
PythonTutor 2.0 стоит на открытых материалах и чужом труде — называем всех.
Курс Д. П. Кириенко CC BY-NC-SA 3.0
Школьный задачник, на котором был построен pythontutor.ru; основа классического курса PythonTutor 2.0.
pythontutor-ru CC BY-NC-SA 3.0
Исходники классического pythontutor.ru: из них извлечены задачи и тесты.
Pyodide MPL-2.0
CPython 3.12, собранный в WebAssembly: на нём выполняется ваш код.
CodeMirror MIT
Редактор кода с подсветкой Python.
Первая задача ждёт
Регистрация не нужна: PythonTutor 2.0 открывается сразу, а черновики и решённые задачи сохраняются в вашем браузере.
rocket_launch Открыть PythonTutor 2.0 open_in_new