Отладка Python

Отладчик Python онлайн

Ищите ошибки в коде на Python прямо в браузере, ничего не устанавливая. Ставьте точки останова, выполняйте программу по шагам, строка за строкой, заходите внутрь функций и смотрите, как меняются переменные и стек вызовов.

Как отладить код на Python онлайн

  1. Откройте редактор Python и напишите или вставьте свою программу. Можно взять и один из примеров ниже.
  2. Щёлкните рядом с номером строки: появится красная точка останова. Их можно поставить сколько угодно.
  3. Нажмите Debug. Программа запустится и остановится на первой точке останова, до которой дойдёт. Если вы переключали редактор в режим «Браузерный Python», сначала верните «Сервер выполнения»: отладчик работает там.
  4. На панели Variables видны текущие значения переменных, а на панели Call Stack - цепочка функций, которая привела к этой строке.
  5. Step Over выполняет следующую строку, Step Into заходит внутрь вызываемой функции, Step Out выполняет текущую функцию до конца, а Continue продолжает работу до следующей точки останова.
  6. Когда найдёте ошибку, нажмите Stop, исправьте код и запустите его снова.

Что показывает отладчик

  • Точки остановаОстановите программу ровно там, где значение становится неверным, вместо того чтобы расставлять print() по всему коду.
  • Пошаговое выполнениеИдите по коду строка за строкой, заходите в функции и выходите из них - и всегда видите, какая строка выполнится следующей.
  • ПеременныеПри каждой остановке видны переменные текущей функции (или глобальные, если вы вне функции) и их значения.
  • Стек вызововЦепочка вызовов функций, которая привела к текущей строке. С ней легко разобраться в рекурсии.
  • Настоящий Python, с input()Программа выполняется на нашем сервере с настоящим Python 3 (это режим редактора по умолчанию), поэтому во время отладки работают ввод с клавиатуры и установленные библиотеки.
  • Помощь ИИПопросите ИИ объяснить ошибку или предложить исправление прямо в редакторе.

Попробуйте: почему среднее считается неверно?

Среднее чисел 80, 72, 95 и 73 равно 80, но функция возвращает 60.0. Поставьте точку останова на строке с return и нажмите Debug: total равно 240, а не 320, потому что range(1, len(scores)) начинает со второго элемента.

average.py
Открыть в отладчике →
average.py
def average(scores):
    total = 0
    for i in range(1, len(scores)):
        total += scores[i]
    # Ожидаем 80.0, а программа печатает 60.0.
    # Поставьте точку останова на следующей строке и посмотрите на total и i.
    return total / len(scores)


print(average([80, 72, 95, 73]))

Рекурсия в стеке вызовов

Поставьте точку останова на строке return n * factorial(n - 1) и нажимайте Step Into. Каждый вызов добавляет в стек новый кадр со своим значением n. Второй вызов, factorial(0), проскакивает базовый случай и уходит всё глубже, пока Python не выдаст RecursionError. По стеку видно, почему так происходит.

factorial.py
Открыть в отладчике →
factorial.py
def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)


# Заходите в каждый вызов через Step Into и смотрите, как стек вызовов растёт, а потом уменьшается.
print(factorial(4))
# factorial(0) никогда не дойдёт до n == 1: посмотрите в отладчике, почему.
print(factorial(0))

Проверка условия внутри цикла

Груш (pears) нет в наличии, но они всё равно попадают в список. Поставьте точку останова на строке с if и нажимайте Continue, чтобы останавливаться на каждом товаре: когда count равно 0, условие всё ещё истинно.

inventory.py
Открыть в отладчике →
inventory.py
inventory = {"apples": 3, "pears": 0, "plums": 5}

in_stock = []
for name, count in inventory.items():
    if count >= 0:  # Ошибка: должно быть > 0
        in_stock.append(name)

print("В наличии:", in_stock)

Отладчик, визуализатор или print()?

ИнструментКогда подходит
ОтладчикНастоящие программы: остановиться в нужном месте, посмотреть значения и самому решать, как программа пойдёт дальше.
Визуализатор PythonУчёба: каждый шаг короткой программы записывается и рисуется, со стрелками от переменных к спискам и объектам.
print()Быстро посмотреть одно значение или записывать в лог, что делает долго работающая программа.
Проверка кода с ИИОбъяснение сообщения об ошибке и готовое исправление.

Частые вопросы

Как отладить код на Python онлайн?

Откройте редактор Python, щёлкните рядом с номером строки, чтобы поставить точку останова, и нажмите Debug. Программа остановится на этой строке, и дальше её можно выполнять по шагам, наблюдая за переменными и стеком вызовов.

Нужно ли устанавливать Python или IDE?

Нет. Отладчик открывается в браузере, а программа выполняется на нашем сервере с настоящим Python, поэтому он работает на любом компьютере, в том числе на школьном ноутбуке или Chromebook.

Можно ли заходить внутрь функций?

Да. Step Into заходит в функцию, которая вызывается на текущей строке, Step Out выполняет её до конца и возвращается к месту вызова, а Step Over выполняет строку целиком, не заходя внутрь.

Чем отладчик отличается от визуализатора?

Отладчик останавливает настоящую программу на точках останова и даёт управлять её выполнением. Визуализатор Python записывает каждый шаг короткой программы и рисует переменные и объекты со стрелками - он удобнее, когда нужно понять, как устроены ссылки.

Работает ли input() во время отладки?

Да. Программа выполняется на сервере и запрашивает ввод в терминале, как при обычном запуске.

Это бесплатно?

Да. Отладка бесплатна и не требует регистрации.