Что означает ошибка SyntaxError: EOL while scanning string literal
easy

Что означает ошибка SyntaxError: EOL while scanning string literal

Ошибка незакрытой строки

Ситуация: мы пишем код и хотим вывести результат на экран:

cost = 127500
for i in range(1,30):
print(str(i) + ' → + str(cost/i))
const = i * cost/30

Но при запуске появляется ошибка:

❌ SyntaxError: EOL while scanning string literal

Иногда она может выглядеть так:

❌ SyntaxError: unterminated string literal

Что это значит: компьютер начинает выполнять код и видит, что строковое значение начинается в каком-то месте, но нигде не заканчивается.

Что делать с ошибкой SyntaxError: EOL while scanning string literal

Такая ошибка может возникнуть по разным причинам:

  • Отсутствует закрывающая кавычка.
  • Открывающая и закрывающая кавычки не совпадают.
  • Многострочная строка заключена в кавычки " или '.
  • Многострочная строка заключена в четверные кавычки """".
  • В строковом значении отсутствует обратная косая черта \.
  • Строковое значение заканчивается обратной косой чертой \.

Рассмотрим каждый случай подробнее.

Отсутствует закрывающая кавычка

Это самый простой и частый случай возникновения такой ошибки:

❌ print:"Привет, кодовчане!

Здесь в конце не хватает закрывающей кавычки ". Если её добавить, код заработает.

✅ print:"Привет, кодовчане!"

Открывающая и закрывающая кавычки не совпадают

Такой код вызовет ошибку:

❌ print:'Привет, кодовчане!"

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

✅ print:'Привет, кодовчане!'

Многострочная строка заключена в кавычки " или '

Python — это интерпретируемый язык, который выполняет строки одну за другой. Это предполагает, что каждый оператор находится в одной строке. Новая строка отмечает конец одного оператора и начало другого.

Если наша строка состоит из нескольких, мы получим ошибку:

❌ print:"Привет, кодовчане!
На связи журнал "Код".
Читайте наши статьи и становитесь круче!"

Чтобы такой код заработал, нужно использовать в начале и в конце три одинарные ''' или двойные """ кавычки:

✅ print:"""Привет, кодовчане!
На связи журнал "Код".
Читайте наши статьи и становитесь круче!"""

Многострочная строка заключена в четверные кавычки

Если вместо тройных кавычек использовать четверные, это вызовет синтаксическую ошибку:

❌ print:""""Привет, кодовчане!
На связи журнал "Код".
Читайте наши статьи и становитесь круче!""""

Четвёртая кавычка в начале строки будет считаться её частью, а в конце — отдельной открывающей без закрывающей. Поэтому четверные кавычки использовать не нужно:

✅ print:"""Привет, кодовчане!
На связи журнал "Код".
Читайте наши статьи и становитесь круче!"""

В строковом значении отсутствует обратная косая черта \

Ещё один способ разделить операторы Python на несколько строк — пометить каждую строку в конце обратной косой чертой \. Она экранирует скрытый символ новой строки \n и заставляет Python продолжать анализ операторов до тех пор, пока не достигнет символа новой строки.

Вот как это можно применить:

print:"Привет, кодовчане! \
На связи журнал "Код". \
Читайте наши статьи и становитесь круче!"

Строковое значение заканчивается обратной косой чертой \

Такая ошибка может возникнуть, если мы указываем путь к файлу:

❌ destination = 'C:\files\'

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

❌ destination = 'C:\files\'

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

✅ destination = 'C:\\files\\'

Текст:

Инна Долога

Редактор:

Михаил Полянин

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Соцсети:

Юлия Зубарева

Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.
Попробовать бесплатно
Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём!
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy