Справочник юного дебаггера
08.07.2025
🔎 Читай ошибки внимательно
Большинство начинающих программистов игнорируют сообщения об ошибке, хотя они обычно прямо указывают, в чём проблема и где она случилась.
Именно поэтому важно учиться понимать, что означает каждая часть ошибки. А если что-то непонятно, всегда можно обратиться к переводчику.
Пример:
SyntaxError: unexpected EOF while parsing
Значит, что программа не видит закрывающего элемента (скобка, кавычки, отступ etc.)
✅ Тестируй больше — запускай чаще
Разделяй код на маленькие фрагменты, проверяй работу поэтапно. Это поможет быстрее найти, где именно всё сломалось.
✅ Пиши, как будто объясняешь другому
Иногда достаточно вслух или письменно объяснить, что ты хотел сделать в каждой строке, и становится ясно, где ошибка.
Метод «резиновой уточки» — расскажи проблему игрушке на столе (или другу), и решение часто находится само.
✅ Проверяй гипотезы
Вместо того, чтобы хаотично менять код:
• Подумай, что может быть причиной
• Проверь это точно
• Если не помогло — пробуй следующее
✅ Используй отладчик
В средах как Thonny, VSCode, PyCharm есть визуальные отладчики:
• Позволяют пошагово пройти по коду
• Смотреть, какие значения у переменных
✅ Логируй (печатай) всё, что движется
Если отладчика нет — print() тебе в помощь:
python print("x =", x)
Это поможет понять, на каком шаге всё идёт не так.
‼️ Основные ошибки и методы их решения
✖️ SyntaxError — Синтаксическая ошибка
SyntaxError: unexpected EOF while parsing
Что это значит:
Программа не видит закрывающего элемента (скобка, кавычки, отступ etc.)
Что делать:
• Проверь, закрыты ли все (), {}…
• Убедись, что все блоки (if, for, def) правильно отступлены и закончены
• Используй IDE с подсветкой (Thonny, VSCode)
✖️ IndentationError — Ошибка отступов
IndentationError: unexpected indent
Что это значит:
Отступ не там, где нужно — Python строго следит за табуляцией.
Что делать:
• Используй только пробелы или только табуляции — не смешивай
• Стандарт: 4 пробела (или Tab) на уровень вложенности
• Проверяй отступы в блоках if, for, while, def, class
✖️ NameError — Переменная не найдена
NameError: name 'x' is not defined
Что это значит:
Ты используешь переменную, которая ещё не была объявлена.
Что делать:
• Проверь правильность написания имени
• Убедись, что объявил переменную до её использования
• Проверь регистр и раскладку (X и x — разные переменные)
Если вы назвали переменную русской буквой с, у, х, а дальше в коде использовали английское имя — будет ошибка.
✖️ TypeError — Неправильный тип данных
TypeError: can’t concatenate int and str
Что это значит:
Ты попытался соединить (или сравнить, сложить и т.д.) значения **разных типов**, которые нельзя комбинировать. Конкретно здесь — целое число и строку, так ничего не выйдет.
Что делать:
• Приведи данные к нужному типу: str(x), int(x), float(x)
• Используй type() чтобы проверить, что у тебя за объект
✖️ ValueError — Неправильное значение
ValueError: invalid literal for int() with base 10: 'abc'
Что это значит:
В переменную с указанным типом данных передано значение, которое нельзя преобразовать в него.
Что делать:
• Проверь, что строка, которую ты хочешь превратить в число, действительно число
• Добавь проверку перед преобразованием:
python if s.isdigit(): x = int(s)
✖️ IndexError — Индекс за пределами списка
IndexError: list index out of range
Что это значит:
Ты пытаешься обратиться к элементу списка, которого нет.
Что делать:
• Проверь длину списка:
len(my_list)
• Убедись, что не выходишь за границы (индекс последнего элемента — len(my_list) — 1)
✖️ KeyError — Нет такого ключа в словаре
KeyError: 'name'
Что это значит:
Ты пытаешься взять значение из словаря по ключу, которого нет.
Что делать:
• Используй dict.get(‘ключ’, значение_по_умолчанию)
• Проверь if ‘ключ’ in словарь перед обращением
✖️ AttributeError — Нет такого метода/свойства
AttributeError: 'int' object has no attribute 'append'
Что это значит:
Ты вызываешь метод, который не существует у этого типа объекта, точнее, не определён у этого типа данных.
Что делать:
• Проверь тип объекта: type(obj)
• Убедись, что метод существует у этого типа
• Ошибки часто появляются из-за случайной переустановки встроенных переменных:
python list = 5 # теперь ты не можешь использовать list как тип
✖️ ZeroDivisionError — Деление на ноль
ZeroDivisionError: division by zero
Что это значит:
Ты делишь на 0.
Что делать:
• Проверяй делитель перед операцией:
python if b != 0: result = a / b
Ошибки — естественная часть обучения программированию. Разобравшись с самыми частыми из них, вы станете увереннее, быстрее и точнее писать код. Но чем дальше вы развиваетесь, тем тоньше становятся проблемы — и тем важнее уметь искать ответы самостоятельно.
С теми, кто уже уверенно пишет код, делимся ссылками на полезную документацию:
• Python: Python.org
• C++: Cppreference.com
И помните: навык исправлять свои ошибки часто важнее, чем писать идеально с первой попытки. Удачи в практике — и пусть никакой SyntaxError не испортит вам день!
🔔 Хотите ещё больше полезных материалов по программированию? Подпишитесь на наш телеграм–канал, чтобы не пропускать самое интересное!