Справочник юного дебаггера

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

 

обложка 1

 

✖️ 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 не испортит вам день!


🔔 Хотите ещё больше полезных материалов по программированию? Подпишитесь на наш телеграм–канал, чтобы не пропускать самое интересное!

Понравилась статья?

Подпишись на Телеграм школы, чтобы не пропустить новые статьи и новости
Telegram канал