// каталог ошибок · 32 сообщения

Ошибки Python до запуска: SyntaxError, IndentationError, TabError

Эти ошибки Python находит ещё до того, как выполнит первую строку, поэтому программа не запускается вообще. В тренажёре Koddo на них пришлось 62% ошибок новичков за лето 2026 года: пропущенное двоеточие, кавычки-ёлочки из мессенджера, лишний пробел в начале строки. Ниже все сообщения этого семейства с дословным переводом, частыми причинами и починкой.

Свой трейсбек удобнее вставить в расшифровщик: он сам найдёт нужное сообщение и подставит имена из твоего кода в объяснение. Ниже — все сообщения семейства по порядку, у каждого постоянная ссылка.

До запуска: SyntaxError, IndentationError, TabError 32

SyntaxError: invalid syntax. Perhaps you forgot a comma?

неверный синтаксис. Возможно, ты забыл запятую?

Два значения стоят рядом без разделителя: в списке, кортеже или аргументах функции Python ждал запятую.

частые причины

  • Пропущена запятая между элементами списка или аргументами.
  • Две строки в кавычках подряд без оператора между ними.

как починить

Найди в подсвеченной строке два значения подряд и поставь между ними запятую.

было

nums = [1, 2 3]

стало

nums = [1, 2, 3]

SyntaxError: invalid syntax в справочнике

SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

неверный синтаксис. Может быть, ты имел в виду == или := вместо =?

В условии стоит присваивание =, а сравнение пишется двумя знаками ==.

частые причины

  • Одиночное = внутри if, while или elif.

как починить

Замени = на == в условии.

было

if x = 5:
    print("пять")

стало

if x == 5:
    print("пять")

SyntaxError: invalid syntax в справочнике

SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?

не хватает скобок в вызове print. Ты имел в виду print(...)?

В Python 3 print это функция, и её аргументы пишут в скобках. Запись без скобок осталась в Python 2.

частые причины

  • Код или пример из старого учебника на Python 2.

как починить

Возьми аргументы print в круглые скобки.

было

print "Привет"

стало

print("Привет")

SyntaxError: invalid syntax в справочнике

SyntaxError: unterminated string literal (detected at line 3)

незавершённая строка: кавычка открыта, но не закрыта до конца строки

Python дошёл до конца строки кода, а закрывающей кавычки не встретил.

частые причины

  • Забыта закрывающая кавычка.
  • Апостроф внутри строки в одинарных кавычках: 'it's'.
  • Кавычки-ёлочки «» вместо " или ' (Python не считает их кавычками).

как починить

Закрой строку той же кавычкой, какой открыл. Если внутри есть апостроф, возьми строку в двойные кавычки.

было

print('Привет, мир)

стало

print('Привет, мир')

SyntaxError: invalid syntax в справочнике

SyntaxError: unterminated triple-quoted string literal (detected at line 12)

незавершённая многострочная строка в тройных кавычках

Строка, открытая тремя кавычками, не закрыта до конца файла. Всё после неё Python считает текстом.

частые причины

  • Закрывающие """ потеряны или в них две кавычки вместо трёх.
  • Docstring открыт, а закрыт обычной кавычкой.

как починить

Найди открывающие тройные кавычки и поставь такие же закрывающие.

SyntaxError: invalid syntax в справочнике

SyntaxError: invalid character '«' (U+00AB)

недопустимый символ ««» (код U+00AB)

В коде за пределами строки и комментария стоит символ, которого нет в синтаксисе Python: типографская кавычка, тире, кириллическая буква.

частые причины

  • Код скопирован из мессенджера, Word или статьи: кавычки " заменились на «» или “”, дефис на тире.
  • Кириллическая буква в имени переменной или в операторе: русская «с» вместо латинской c.
  • Символ из оформления, например • или →, попал в код.

как починить

Перенабери подсвеченный символ с клавиатуры: прямые кавычки " и ', дефис -, латинские буквы.

было

print(«Привет»)

стало

print("Привет")

SyntaxError: invalid syntax в справочнике

SyntaxError: invalid non-printable character U+00A0

недопустимый непечатаемый символ U+00A0

В коде спрятан невидимый символ, чаще всего неразрывный пробел (U+00A0) из документа или веб-страницы.

частые причины

  • Код скопирован с сайта или из документа, где обычные пробелы заменены неразрывными.

как починить

Удали отступы в подсвеченной строке и набери пробелы заново с клавиатуры.

SyntaxError: invalid syntax в справочнике

SyntaxError: expected 'except' or 'finally' block

ожидался блок except или finally

Блок try не может стоять один: после него обязательно идёт except или finally.

частые причины

  • Написан try, а обработка ошибки ещё не дописана.
  • except стоит с другим отступом и не относится к этому try.

как починить

Добавь после тела try блок except Ошибка: на том же уровне отступа, что и try.

было

try:
    x = int(text)

стало

try:
    x = int(text)
except ValueError:
    x = 0

try/except в справочнике

SyntaxError: expected ':'

ожидался символ :

Заголовок if, for, while, def или class должен заканчиваться символом :, а его нет.

частые причины

  • Забыто двоеточие в конце строки с if, else, for, while, def, class, try.

как починить

Поставь : в конце подсвеченной строки.

было

def hello()
    print("Привет")

стало

def hello():
    print("Привет")

SyntaxError: invalid syntax в справочнике

SyntaxError: '(' was never closed

скобка ( так и не была закрыта

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

частые причины

  • Не закрыты скобки вызова функции или списка.
  • Скобка закрыта не тем символом: ) вместо ].

как починить

Посчитай открывающие и закрывающие скобки в подсвеченной строке и в строке над ней.

было

print("Сумма:", total
total = 0

стало

print("Сумма:", total)
total = 0

SyntaxError: invalid syntax в справочнике

SyntaxError: unmatched ')'

лишняя закрывающая скобка )

Закрывающая скобка ) стоит там, где открытой скобки уже нет.

частые причины

  • Скобка продублирована при правке.
  • Открывающая скобка удалена, а закрывающая осталась.

как починить

Удали лишнюю ) или верни открывающую скобку.

было

print(len(items)))

стало

print(len(items))

SyntaxError: invalid syntax в справочнике

SyntaxError: closing parenthesis ']' does not match opening parenthesis '('

закрывающая скобка ] не соответствует открывающей (

Скобки перепутаны: открыта (, а закрыта ].

частые причины

  • Список, кортеж и вызов функции вложены друг в друга, и порядок закрытия сбился.

как починить

Закрывай скобки в обратном порядке открытия: последняя открытая закрывается первой.

было

total = sum([1, 2, 3)]

стало

total = sum([1, 2, 3])

SyntaxError: invalid syntax в справочнике

SyntaxError: f-string: single '}' is not allowed

f-строка: одиночная } не допускается

Внутри f-строки фигурные скобки открывают выражение, поэтому одна } без пары запрещена.

частые причины

  • Литеральная скобка в тексте f-строки.
  • Выражение {...} закрыто дважды.

как починить

Чтобы вывести саму скобку, удвой её: {{ и }}.

было

print(f"Словарь: {d}}")

стало

print(f"Словарь: {d}")

f-строки в справочнике

SyntaxError: f-string: expecting '}'

f-строка: ожидалась закрывающая }

Выражение в f-строке открыто скобкой {, а закрывающей } нет.

частые причины

  • Забыта } после имени переменной.
  • Внутри выражения стоят кавычки того же вида, что и у всей строки.

как починить

Закрой каждое {выражение} и не используй внутри него те же кавычки, что снаружи.

было

print(f"Привет, {name")

стало

print(f"Привет, {name}")

f-строки в справочнике

SyntaxError: f-string: invalid syntax

f-строка: неверный синтаксис внутри выражения

Код внутри {} f-строки не разбирается: это обычное выражение Python, и ошибка в нём.

частые причины

  • Внутри {} стоит присваивание или двоеточие без формата.
  • Кавычки внутри выражения совпали с кавычками строки.
  • Внутри {} оказался текст, а не выражение.

как починить

Вынеси сложное выражение в переменную перед f-строкой и подставь её имя.

было

print(f"Итог: {total = 5}")

стало

total = 5
print(f"Итог: {total}")

f-строки в справочнике

SyntaxError: f-string: invalid conversion character: expected 's', 'r', or 'a'

f-строка: недопустимый символ преобразования, ожидались s, r или a

Восклицательный знак внутри {} Python читает как начало преобразования !r, !s или !a, а дальше стоит что-то другое.

частые причины

  • Сравнение != внутри f-строки без пробелов в старых версиях Python.
  • Лишний ! перед закрывающей скобкой.

как починить

Вынеси сравнение в переменную до f-строки или поставь пробелы вокруг !=.

было

print(f"{a!=b}")

стало

differ = a != b
print(f"{differ}")

f-строки в справочнике

SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

нельзя присвоить значение литералу. Может быть, ты имел в виду ==?

Слева от = стоит число или строка, а присваивать можно только имени.

частые причины

  • Перепутан порядок: 5 = x вместо x = 5.
  • В условии написано = вместо ==.

как починить

В присваивании имя слева, значение справа. В сравнении используй ==.

было

if 5 = x:

стало

if x == 5:

SyntaxError: invalid syntax в справочнике

SyntaxError: cannot assign to function call here. Maybe you meant '==' instead of '='?

нельзя присвоить значение вызову функции. Может быть, ты имел в виду ==?

Слева от = стоит вызов функции, а результат вызова изменить нельзя.

частые причины

  • len(items) = 0 вместо сравнения.
  • Попытка «записать» значение через функцию вместо переменной.

как починить

Сравнивай через ==, а сохраняй результат в переменную: count = len(items).

было

if len(items) = 0:

стало

if len(items) == 0:

SyntaxError: invalid syntax в справочнике

SyntaxError: unexpected character after line continuation character

неожиданный символ после символа переноса строки \

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

частые причины

  • Код скопирован из чата или JSON с экранированными кавычками: print(\"Привет\").
  • Путь Windows написан без кавычек.
  • После \ в конце строки стоит пробел или комментарий.

как починить

Убери \ перед кавычками. Пути пиши строкой: "C:\\data" или r"C:\data".

было

print(\"Привет\")

стало

print("Привет")

SyntaxError: invalid syntax в справочнике

SyntaxError: 'return' outside function

return за пределами функции

return возвращает значение из функции, а эта строка в функцию не входит: скорее всего, у неё пропал отступ.

частые причины

  • return стоит на уровне файла, а не внутри def.
  • Отступ тела функции потерян при копировании.

как починить

Сдвинь return внутрь функции тем же отступом, что и остальное тело.

было

def double(x):
    y = x * 2
return y

стало

def double(x):
    y = x * 2
    return y

функции в справочнике

SyntaxError: 'break' outside loop

break за пределами цикла

break управляет циклом, а здесь стоит вне for и while.

частые причины

  • Отступ сбился, и строка выпала из тела цикла.
  • break написан в if, который сам не внутри цикла.

как починить

Убедись, что строка с break стоит внутри тела цикла по отступу.

циклы в справочнике

SyntaxError: invalid decimal literal

неверная запись числа

Сразу после цифр идёт буква, и Python не может понять, число это или имя.

частые причины

  • Имя переменной начинается с цифры: 2nd = ....
  • Единицы измерения приклеены к числу: 10px, 100руб.
  • Пропущен оператор между числом и именем: 2x вместо 2 * x.

как починить

Имена начинай с буквы, единицы храни отдельно, умножение пиши явно.

было

width = 10px

стало

width = 10

SyntaxError: invalid syntax в справочнике

SyntaxError: leading zeros in decimal integer literals are not permitted

ведущие нули в десятичных числах не допускаются

Число вроде 007 Python не принимает: ноль в начале раньше означал восьмеричную запись.

частые причины

  • Дата или номер записаны числом с нулём впереди: 08, 007.

как починить

Убери ведущие нули или храни значение строкой: "08".

было

month = 08

стало

month = 8

SyntaxError: invalid syntax в справочнике

SyntaxError: unexpected EOF while parsing

неожиданный конец файла при разборе

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

частые причины

  • Не закрыта скобка в последних строках.
  • После if, for или def в конце файла нет тела.

как починить

Проверь последние строки: закрой скобки и допиши тело блока.

SyntaxError: invalid syntax в справочнике

SyntaxError: invalid syntax

неверный синтаксис

Python не смог разобрать строку и не нашёл более точной подсказки. Стрелка ^ под строкой показывает, где он споткнулся, но причина часто на строке выше.

частые причины

  • Пропущено двоеточие после if, for, while, def или class.
  • Не закрыта скобка или кавычка на предыдущей строке.
  • Ключевое слово использовано как имя: class = 5, if = 3.
  • Оператор пропущен или продублирован: x = = 5, a b.
  • Пример из другого языка: else if, &&, ; в конце строки.

как починить

Прочитай строку со стрелкой и одну строку над ней. Проверь двоеточия, парность скобок и кавычек, имена переменных.

было

if x > 5
    print(x)

стало

if x > 5:
    print(x)

SyntaxError: invalid syntax в справочнике

SyntaxError

синтаксическая ошибка

Python не смог разобрать код до запуска. Текст после двоеточия уточняет, что именно не сошлось.

частые причины

  • Пропущен или лишний символ рядом со стрелкой ^.
  • Конструкция из другого языка или из более новой версии Python.

как починить

Сверь строку со стрелкой с примером из справочника по этой конструкции.

SyntaxError: invalid syntax в справочнике

IndentationError: unexpected indent

неожиданный отступ

Строка сдвинута вправо, хотя предыдущая строка не открывала блок. Python не понимает, к чему относится этот отступ.

частые причины

  • Лишние пробелы в начале строки после копирования.
  • Продолжение кода после блока не вернулось на прежний уровень.
  • Пустая строка со случайными пробелами внутри функции.

как починить

Выровняй строку по строке выше: тело блока на 4 пробела глубже заголовка, остальное на том же уровне.

было

x = 5
    print(x)

стало

x = 5
print(x)

IndentationError в справочнике

IndentationError: expected an indented block after 'if' statement on line 3

ожидался блок с отступом после if на строке 3

Заголовок if на строке 3 открыл блок, а тела с отступом после него нет.

частые причины

  • Тело блока написано без отступа.
  • Блок пока пустой: заголовок есть, кода под ним нет.

как починить

Сдвинь тело на 4 пробела вправо. Если блок пока пустой, напиши в нём pass.

было

if x > 0:
print("плюс")

стало

if x > 0:
    print("плюс")

IndentationError в справочнике

IndentationError: expected an indented block after function definition on line 1

ожидался блок с отступом после объявления function на строке 1

После def или class на строке 1 должно идти тело с отступом.

частые причины

  • Тело функции написано без отступа.
  • Функция объявлена, а тело ещё не написано.

как починить

Сдвинь тело на 4 пробела. Для заглушки напиши pass или ....

было

def greet(name):
print(name)

стало

def greet(name):
    print(name)

IndentationError в справочнике

IndentationError: unindent does not match any outer indentation level

отступ не совпадает ни с одним внешним уровнем

Строка вернулась влево на уровень, которого нет: например, заголовок на 0 пробелов, тело на 4, а эта строка на 2.

частые причины

  • Смешаны табы и пробелы.
  • Отступ набран вручную и не кратен уровню блока.

как починить

Перенабери отступы в этом блоке только пробелами, по 4 на уровень. В редакторе включи показ пробелов.

IndentationError в справочнике

IndentationError

ожидался блок с отступом

После заголовка блока Python ждал тело с отступом и не нашёл его.

частые причины

  • Тело блока без отступа.
  • Пустой блок.

как починить

Добавь отступ телу блока или напиши в нём pass.

IndentationError в справочнике

TabError

непоследовательное использование табов и пробелов в отступах

В одном блоке часть строк сдвинута табами, часть пробелами. Для Python это разные отступы, даже если на экране они выглядят одинаково.

частые причины

  • Код собран из двух источников с разными настройками редактора.
  • Часть строк набрана клавишей Tab, часть пробелами.

как починить

Замени все табы на пробелы: в редакторе есть команда «преобразовать отступы».

IndentationError в справочнике

Как искать причину

  1. Python показывает строку и ставит стрелку, но причина часто на строке выше: незакрытая скобка или кавычка «доезжает» до следующей строки, и ошибка всплывает там.
  2. Проверь парность скобок и кавычек, двоеточие после if, for, while и def, а ещё символы из мессенджеров и документов: кавычки-ёлочки, длинное тире, неразрывный пробел U+00A0 выглядят как обычные, но Python их не принимает.
  3. IndentationError и TabError почти всегда про смешение табов и пробелов или лишний отступ после копирования. Включи в редакторе показ невидимых символов и выбери четыре пробела на уровень.
  4. Пока есть синтаксическая ошибка, программа не запускается вообще, поэтому print для отладки не поможет: сначала добейся запуска, потом ищи ошибки в логике.

Как читать трейсбек

  1. Читай снизу вверх: последняя строка называет ошибку и объясняет её текстом.
  2. Строка выше с File "...", line N показывает, где Python остановился. Для SyntaxError причина часто на строке выше указанной.
  3. Стрелка ^ под кодом отмечает место, где разбор сломался.

Дальше