code Новая версия pythontutor · Python 3.12

PythonTutor 2.0 Новый pythontutor: каждый шаг программы — на экране

Новая версия классического задачника: 704 задачи вместо прежнего курса, Python 3.12 вместо 2.7 и визуализатор, который работает прямо в браузере. Проверяйте решение на открытых и скрытых тестах, а если что-то пошло не так — разберите программу по шагам и посмотрите, что происходит с переменными.

704 задачи с автопроверкой
35 разделов — в классическом курсе было 11 тем
3.12 версия Python вместо 2.7
0 байт вашего кода на сервере
ПОШАГОВЫЙ РАЗБОР
  1. s = 0
  2. for i in range(1, 4):
  3. s += i
  4. print(i, s)
  5. print("итого", s)

					

Записанный пример: потяните ползунок. В PythonTutor 2.0 так разбирается ваша собственная программа — прямо в браузере.

memory Версия 2.0

Что нового в PythonTutor 2.0

Классический pythontutor.ru — это версия 1.0: школьный задачник Д. П. Кириенко и визуализатор на сервере. Во второй версии задачник сохранён, а всё вокруг него сделано заново.

bolt

PythonTutor 2.0

новая версия
  • 704 задачи в трёх курсах: к школьным темам добавлены «Символы и коды ASCII» и «Алгоритмы», подборка олимпиадных задач и 21 параграф задач из учебника Полякова
  • Python 3.12 вместо 2.7: f-строки, распаковка и современные сообщения об ошибках — с объяснением по-русски
  • Скрытые тесты у каждой задачи: решение, подогнанное под пример из условия, больше не проходит
  • Визуализатор в браузере: трасса строится на вашем компьютере без очереди к серверу, матрицы и словари рисуются таблицами
  • Навигация как в классике: курсы, разделы и задачи — столбиком слева, решённые отмечены галочкой, а прогресс сохраняется сам
  • Работает без сети после первой загрузки — интерпретатор остаётся в кэше браузера
cloud_off

pythontutor.ru (версия 1.0)

классика
  • Каждый запуск — запрос к серверу: код уходит туда, выполняется там и возвращается трассой
  • Python 2.7 и Django 1.x; проект давно не обновляется и временами недоступен
  • Нет скрытых тестов и объяснения ошибок на языке школьника
  • Если сайт не открывается или школьная сеть режет соединения — заниматься нельзя

PythonTutor 2.0 делает ПедОбраз на основе открытых материалов курса Д. П. Кириенко (лицензия CC BY-NC-SA 3.0) и репозитория pythontutor-ru; с авторами pythontutor.ru проект не связан.

rocket Как работать

Как устроена работа

1

Выберите задачу

Слева — курсы, разделы и задачи столбиком, как в классическом pythontutor. Рядом условие с примерами ввода и вывода и теория раздела, где любой пример можно сразу разобрать по шагам.

2

Напишите код

Редактор с подсветкой Python, автоотступами и подсказками. Черновик сохраняется сам: можно закрыть вкладку и вернуться к задаче завтра.

3

Проверьте на тестах

Кнопка «Проверить» прогоняет программу по открытым и скрытым тестам. Видно, сколько тестов пройдено и какие упали. Все тесты зелёные — задача решена и отмечается галочкой в списке.

4

Разберите по шагам

Тест не прошёл? Кнопка «Разобрать этот тест по шагам» запускает программу на том самом вводе. Видно, какая строка выполняется, как меняются переменные, списки и стек вызовов, — ошибка находится глазами, а не угадыванием.

lightbulb Зачем

Почему разбор по шагам работает лучше лекции

На лекции программа выполняется в голове у учителя. Здесь — у ученика перед глазами, и её можно отмотать назад.

visibility

Видно то, что обычно невидимо

Переменная — не буква на доске, а ячейка, которая меняется. Визуализатор показывает её значение до и после каждой строки, и «присваивание» перестаёт быть абстракцией.

history

Назад можно отмотать

Ползунок шагов работает в обе стороны: пропустили момент, когда s стало равно 6, — шаг назад. Лекцию так не перемотаешь, а свою программу — пожалуйста.

grid_on

Списки и матрицы — картинкой

Список рисуется рядом ячеек с индексами, двумерный список — таблицей, словарь — парами «ключ → значение». Ячейки, изменившиеся на шаге, вспыхивают: видно, куда «уехал» индекс.

account_tree

Рекурсия без магии

Каждый вызов функции — отдельный кадр в стеке со своими переменными. Можно сосчитать, сколько раз вызвалась fib(), и проследить, как значения возвращаются обратно.

bug_report

Ошибка — это подсказка

IndexError и ZeroDivisionError объясняются по-русски и с номером строки, а визуализатор останавливается ровно на том шаге, где возникла ошибка.

schedule

Своя скорость

Никто не торопит: каждый шаг можно рассматривать сколько угодно. Тот, кто на уроке стеснялся переспросить, здесь переспрашивает программу.

auto_awesome Задачи

Задачи, где визуализатор особенно нужен

🌀

Заполнение спиралью

Раздел «Двумерные массивы», школьный курс. Заполнить матрицу n × m числами по спирали от левого верхнего угла — индексы начинают путаться уже на втором витке.

  • Двумерные списки
  • Четыре направления обхода
  • Матрица заполняется на глазах
🐇

Числа Фибоначчи

Раздел «Функции и рекурсия», школьный курс. Вернуть n-е число Фибоначчи без единого цикла: решение в несколько строк, а вызовов — десятки.

  • Рекурсивная функция
  • Базовый случай
  • Стек вызовов кадр за кадром
🧭

Путь в лабиринте

Задачи Полякова, § 67 «Матрицы». Найти длину кратчайшего пути из левого верхнего угла в правый нижний — итоговая задача для тех, кто дошёл до обхода в ширину.

  • Матрицы
  • Очередь и обход в ширину
  • Скрытые тесты с тупиками
🧮

Калькулятор со скобками

Задачи Полякова, § 66 «Символьные строки». Вычислить выражение, записанное строкой: целые числа, четыре действия и скобки любой вложенности.

  • Разбор строки по символам
  • Приоритет операций
  • Рекурсия или стек — на выбор
touch_app Проверка

Три решения против четырёх тестов

Такие ответы и приходят от класса. Выберите решение и посмотрите, какие тесты оно переживёт: открытые видно сразу, скрытые выдают себя только вердиктом.

Стенд проверки требует JavaScript. Сам тренажёр с редактором кода и автопроверкой открывается кнопкой ниже.

Здесь вердикты заранее записаны — стенд показывает логику проверки, а не выполняет Python. В самом тренажёре код ученика по-настоящему исполняется у него в браузере.

topic Для кого

Для кого

🎒

Ученикам 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.

play_arrow Открыть PythonTutor 2.0 arrow_forward
lock Данные

Данные и разрешения

PythonTutor 2.0 запускает ваш код — поэтому первым делом отвечаем, куда этот код попадает.

  • Код не покидает компьютер

    Python (Pyodide — CPython 3.12 в WebAssembly) работает в отдельном фоновом потоке вашего браузера. Программа, ввод и результаты тестов на сервер не отправляются: сервер только раздаёт файлы.

  • Всё с нашего домена

    Интерпретатор, шрифты и картинки раздаются с app.педобраз.рф. Никаких CDN и чужих шрифтов в тренажёре нет — третьим лицам по этому каналу ничего не передаётся (152-ФЗ).

  • Прогресс — в вашем браузере

    Черновики, решённые задачи и «Билет на перемену» лежат в localStorage вашего браузера. Ни имени, ни почты, ни учётной записи: очистите данные сайта — и всё исчезнет.

  • Статистика — после согласия

    Счётчик посещений включается только после кнопки «Принять» и считает открытия страницы, а не содержимое программ. Рекламы внутри тренажёра нет.

Подробно о том, что и зачем собирает портал, — в политике обработки персональных данных; отозвать согласие можно в настройках приватности.

quiz Вопросы

Часто задаваемые вопросы

Чем PythonTutor 2.0 отличается от pythontutor.ru? expand_more
Задачник тот же по духу, но вырос: 704 задачи вместо классического курса, к школьным темам добавлены олимпиадные задачи и задачи Полякова. Код пишется на Python 3.12, а не 2.7, у каждой задачи есть скрытые тесты, ошибки объясняются по-русски, а визуализатор работает в браузере без обращения к серверу.
Это официальное продолжение pythontutor.ru? expand_more
Нет. PythonTutor 2.0 делает команда ПедОбраза на основе открытого задачника курса Д. П. Кириенко (CC BY-NC-SA 3.0), на котором был построен pythontutor.ru. С авторами оригинального сайта проект не связан.
Нужно ли регистрироваться? expand_more
Нет. Тренажёр открывается сразу. Черновики и решённые задачи сохраняются в вашем браузере, поэтому на этом же компьютере вы продолжите с того места, где остановились.
Куда отправляется мой код? expand_more
Никуда. Python запускается в отдельном фоновом потоке вашего браузера через WebAssembly. Сервер отдаёт страницу, интерпретатор и условия задач и ничего не получает обратно.
Что будет, если программа зациклится? expand_more
Через 2,5 секунды тренажёр остановит её и подскажет, что, похоже, где-то бесконечный цикл. Вкладка при этом не зависнет.
Сколько шагов покажет визуализатор? expand_more
До 400. Этого хватает на любую учебную задачу; если программа длиннее, визуализатор честно скажет, что показал только начало.
С какого класса подходит? expand_more
С 7 класса — с того момента, когда начинается текстовое программирование. Тем, кто пока собирает программы из блоков, лучше начать со Scratch или Blockly Games.
Это бесплатно? expand_more
Да, бесплатно и без рекламы внутри тренажёра.
favorite Благодарности

Благодарности

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