Комментарии и простые опечатки
Уроки курсаКомментарии и простые опечатки
Чтение сообщения об ошибке и исправление опечатки
Сообщение об ошибке — не враг, а подсказка. Вернёмся к выводу, который мы уже видели в предыдущей секции:
File "hello.py", line 1
print("Привет, мир!"
^
SyntaxError: '(' was never closed
Здесь три элемента, каждый из которых несёт конкретную информацию:
File "hello.py", line 1— имя файла и номер строки, где интерпретатор потерял нить.
Это отправная точка: открываете файл, переходите к строке с указанным номером.
- Повтор кода со стрелкой
^— интерпретатор показывает саму строку и указывает символом^на место, где обнаружил проблему. SyntaxError: '(' was never closed— тип ошибки и краткое описание. Помогает сузить поиск, но не всегда точно называет причину.
Читать вывод нужно сверху вниз: сначала File/line — чтобы найти место, потом описание — чтобы понять, что искать.
Теперь разберём второй распространённый случай — пропущенная кавычка. Добавьте в hello.py такую строку:
print("Привет, мир!)
Здесь закрывающая кавычка пропущена, а скобка стоит. Запускаем:
File "hello.py", line 1
print("Привет, мир!)
^
SyntaxError: unterminated string literal (detected at line 1)
Интерпретатор сообщает, что строковый литерал не был закрыт — он дошёл до конца строки, так и не найдя закрывающей кавычки. Исправление: добавить " перед закрывающей скобкой:
print("Привет, мир!")
Примечание. В Python до версии 3.10 то же самое сообщение выглядело как
SyntaxError: EOL while scanning string literal. Смысл тот же — строка не закрыта, — но формулировка другая. Если вы встретите его в старых руководствах, знайте: речь об одной и той же проблеме.
Обратите внимание на важный нюанс: номер строки в line N — это место, где интерпретатор обнаружил проблему, а не обязательно место, где вы допустили опечатку. Пропущенная кавычка в начале строки может «сломать» синтаксис гораздо позже. Если строка N выглядит корректно — посмотрите на строку выше.
Весь цикл исправления:
Запустить
python hello.pyи получить ошибку.Найти строку
File "...", line Nв выводе.Перейти к строке N в файле.
Найти опечатку: пропущена скобка, кавычка или что-то лишнее.
Исправить и запустить снова.
