Ошибка SyntaxError: unexpected EOF while parsing Solution в Python

В Python простой, но строгий синтаксис. Если забыть закрыть блок кода, то возникнет ошибка «SyntaxError: unexpected EOF while parsing». Это происходит часто, например, когда вы забыли добавить как минимум одну строку в цикл for.

В этом материале разберемся с этой ошибкой, и по каким еще причинам она возникает. Разберем несколько примеров, чтобы понять, как с ней справляться.

Ошибка «SyntaxError: unexpected EOF while parsing» возникает в том случае, когда программа добирается до конца файла, но не весь код еще выполнен. Это может быть вызвано ошибкой в структуре или синтаксисе кода.

EOF значит End of File. Представляет собой последний символ в Python-программе.

Python достигает конца файла до выполнения всех блоков в таких случаях:

  • Если забыть заключить код в специальную инструкцию, такую как, циклы for или while, или функцию.
  • Не закрыть все скобки на строке.

Разберем эти ошибки на примерах построчно.

Пример №1: незавершенные блоки кода

Циклы for и while, инструкции if и функции требуют как минимум одной строки кода в теле. Если их не добавить, результатом будет ошибка EOF.

Рассмотрим такой пример цикла for, который выводит все элементы рецепта:

ingredients = ["325г муки", "200г охлажденного сливочного масла", "125г сахара", "2 ч. л. ванили", "2 яичных желтка"]

for i in ingredients:

Определяем переменную ingredients, которая хранит список ингредиентов для ванильного песочного печенья. Используем цикл for для перебора по каждому из элементов в списке. Запустим код и посмотрим, что произойдет:

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing

Внутри цикла for нет кода, что приводит к ошибке. То же самое произойдет, если не заполнить цикл while, инструкцию if или функцию.

Для решения проблемы требуется добавить хотя бы какой-нибудь код. Это может быть, например, инструкция print() для вывода отдельных ингредиентов в консоль:

Запустим код:

325г муки
200г охлажденного сливочного масла
125г сахара
2 ч. л. ванили
2 яичных желтка

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

Если же кода для такого блока у вас нет, используйте оператор pass как заполнитель. Выглядит это вот так:

Такой код ничего не возвращает. Инструкция pass говорит о том, что ничего делать не нужно. Такое ключевое слово используется в процессе разработке, когда разработчики намечают будущую структуру программы. Позже pass заменяются на реальный код.

Пример №2: незакрытые скобки

Ошибка «SyntaxError: unexpected EOF while parsing» также возникает, если не закрыть скобки в конце строки с кодом.

Напишем программу, которая выводит информацию о рецепте в консоль. Для начала определим несколько переменных:

name = "Капитанская дочка"
author = "Александр Пушкин"
genre = "роман"

Отформатируем строку с помощью метода .format():

print('Книга "{}" - это {}, автор {}'.format(name, genre, author)

Значения {} заменяются на реальные из .format(). Это значит, что строка будет выглядеть вот так:

Книга "НАЗВАНИЕ" - это ЖАНР, автор АВТОР

Запустим код:

File "main.py", line 7

              ^
SyntaxError: unexpected EOF while parsing

На строке кода с функцией print() мы закрываем только один набор скобок, хотя открытыми были двое. В этом и причина ошибки.

Решаем проблему, добавляя вторую закрывающую скобку («)») в конце строки с print().

print('Книга "{}" - это {}, автор {}'.format(name, genre, author))

Теперь на этой строке закрываются две скобки. И все из них теперь закрыты. Попробуем запустить код снова:

Книга "Капитанская дочка" это роман. Александр Пушкин

Теперь он работает. То же самое произойдет, если забыть закрыть скобки словаря {} или списка [].


Выводы

Ошибка «SyntaxError: unexpected EOF while parsing» возникает, если интерпретатор Python добирается до конца программы до выполнения всех строк.

Для решения этой проблемы сперва нужно убедиться, что все инструкции, включая while, for, if и функции содержат код. Также нужно проверить, закрыты ли все скобки.

Максим
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.
Мои контакты: Почта
admin@pythonru.comAlex Zabrodin2018-10-26OnlinePython, Programming, HTML, CSS, JavaScript