Справочник · ошибки Python

SyntaxError

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

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

Не те кавычки

print(«Привет!»)
Python сообщает об ошибке
SyntaxError: invalid character '«' (U+00AB)
Что случилось
В коде стоят кавычки «. Python их не понимает.
Почему так бывает
Такие кавычки ставят Word, телефон и мессенджеры. Python понимает только прямые кавычки " или '.
Как исправить
Сотри эти кавычки и набери прямые: Shift + 2 в русской раскладке или Shift + Э в английской.

Разбираем в уроке 0.1 «Первая программа».

Нет скобок у print

SyntaxError: Missing parentheses in call to 'print'
Что случилось
После print нет скобок.
Почему так бывает
Всё, что нужно вывести, print берёт из скобок.
Как исправить
Напиши так: print("текст").

Разбираем в уроке 0.1 «Первая программа».

Кавычка не закрыта

print("Привет!)
Python сообщает об ошибке
SyntaxError: unterminated string literal (detected at line 1)
Что случилось
Ты открыл кавычку и не закрыл.
Почему так бывает
Python ищет конец текста и доходит до конца строчки.
Как исправить
Поставь вторую кавычку в конце текста.

Разбираем в уроке 0.1 «Первая программа».

Скобка не закрыта

print("Привет"
Python сообщает об ошибке
SyntaxError: '(' was never closed
Что случилось
Скобка ( открыта, но не закрыта.
Почему так бывает
Каждой открытой скобке нужна закрывающая.
Как исправить
Сосчитай скобки в этой строчке и добавь недостающую.

Разбираем в уроке 0.1 «Первая программа».

Скобка не закрыта

SyntaxError: unexpected EOF while parsing
Что случилось
Скобка открыта, но не закрыта.
Почему так бывает
Каждой открытой скобке нужна закрывающая.
Как исправить
Сосчитай скобки в этой строчке и добавь недостающую.

Разбираем в уроке 0.1 «Первая программа».

Лишняя скобка

SyntaxError: unmatched ')'
Что случилось
Закрывающая скобка ) лишняя: для неё нет открывающей.
Почему так бывает
Скобки ходят парами.
Как исправить
Убери лишнюю скобку или добавь открывающую.

Разбираем в уроке 0.1 «Первая программа».

Нет двоеточия

SyntaxError: expected ':'
Что случилось
После if, for, while, def, try и except нужно двоеточие.
Почему так бывает
Двоеточие говорит Python: дальше идёт блок с отступом.
Как исправить
Поставь двоеточие в конце строчки.

Разбираем в уроке 2.2 «Если — то — иначе».

Слева должно быть имя

SyntaxError: cannot assign to literal
Что случилось
Слева от знака = стоит не имя коробки.
Почему так бывает
Знак = кладёт значение в переменную. Слева всегда имя переменной, справа значение. В математике можно писать в любом порядке, в Python нельзя.
Как исправить
Напиши имя слева, а значение справа: имя = значение.

Разбираем в уроке 1.2 «Переменные — имена для значений».

Знак сравнения написан наоборот

SyntaxError: invalid syntax
Что случилось
Знак =< Python не знает.
Почему так бывает
В знаках сравнения равно всегда стоит вторым: <=, >=, !=.
Как исправить
Поменяй знаки местами.

Разбираем в уроке 2.1 «Сравниваем».

Команда не в цикле

SyntaxError: 'break' outside loop
Что случилось
Команда break стоит не внутри цикла.
Почему так бывает
Break и continue работают только внутри while или for.
Как исправить
Сдвинь её вправо, чтобы она оказалась внутри цикла.

Разбираем в уроке 3.3 «Выйти из цикла».

Одно «=» в сравнении

SyntaxError: … Maybe you meant '=='
Что случилось
В условии сравнивают через ==.
Почему так бывает
Одинарное = значит «запомни», а не «равно».
Как исправить
Замени = на ==.

Разбираем в уроке 2.1 «Сравниваем».

Одно равно вместо двух

SyntaxError: invalid syntax
Что случилось
В проверке стоит один знак =, а нужно сравнение.
Почему так бывает
Один знак = кладёт значение в переменную. Сравнивают двумя знаками ==.
Как исправить
Замени = на == в проверке.

Разбираем в уроке 2.2 «Если — то — иначе».

Умножение — это звёздочка

SyntaxError: invalid character '×'
Что случилось
В коде стоит знак ×. Python его не понимает.
Почему так бывает
В тетради умножают крестиком или точкой, а в Python — звёздочкой *.
Как исправить
Замени × на *: например, 24 * 60.

Разбираем в уроке 0.1 «Первая программа».

Непонятный символ

SyntaxError: invalid character '«'
Что случилось
В коде есть символ «, который Python не понимает.
Почему так бывает
Часто его приносит копирование текста из документа или чата.
Как исправить
Сотри этот символ и набери нужный вручную.

Разбираем в уроке 0.1 «Первая программа».

Умножение — это звёздочка

SyntaxError: invalid syntax
Что случилось
Между числами стоит буква х. Python не знает такого знака.
Почему так бывает
В тетради умножают крестиком, а в Python — звёздочкой *.
Как исправить
Замени х на *: например, 24 * 60.

Разбираем в уроке 0.1 «Первая программа».

Текст без кавычек

SyntaxError: invalid syntax
Что случилось
В строчке есть слова без кавычек: привет.
Почему так бывает
Слова без кавычек Python читает как команды и имена. Текст для него всегда пишется в кавычках.
Как исправить
Возьми весь текст в прямые кавычки, например print("Привет, Бит!").

Разбираем в уроке 0.1 «Первая программа».

У try нет except

SyntaxError: expected 'except' or 'finally' block
Что случилось
После блока try не найден блок except.
Почему так бывает
Блок try сам по себе не работает. Ему нужен запасной путь: except с названием ошибки.
Как исправить
Добавь после try строчку except ValueError: и действие с отступом.

Разбираем в уроке 7.2 «try и except».

Не хватает запятой

SyntaxError: invalid syntax. Perhaps you forgot a comma?
Что случилось
Между значениями не хватает запятой.
Почему так бывает
Значения в скобках print, в списках и словарях разделяют запятыми.
Как исправить
Поставь запятую между значениями.

Разбираем в уроке 0.1 «Первая программа».

Python не понял строчку

SyntaxError: invalid syntax
Что случилось
Python не понял, как написана строчка.
Почему так бывает
Чаще всего пропущена кавычка, скобка или двоеточие. Иногда причина строчкой выше.
Как исправить
Проверь кавычки и скобки в этой строчке и в строчке над ней.

Разбираем в уроке 0.1 «Первая программа».

Запасные значения идут в конце

def order(size="средняя", dish):
    print(size, dish)
Python сообщает об ошибке
SyntaxError: parameter without a default follows parameter with a default
Что случилось
Обычный параметр стоит после параметра с запасным значением.
Почему так бывает
Python раздаёт значения по порядку. Поэтому параметры с запасным значением ставят после обычных.
Как исправить
Перенеси параметры без запасного значения вперёд.

Разбираем в уроке 5.4 «Запасные значения и свои переменные».

Другие ошибки