Что означает ошибка SyntaxError: Invalid Decimal Literal
easy

Что означает ошибка SyntaxError: Invalid Decimal Literal

Python встретил неверный десятичный литерал

Ситуация: мы пишем калькулятор конвертации разных величин: фунты в килограммы, мили в километры и всё такое. Чтобы было проще, мы задаём константы, которые пригодятся нам при переводе величин:

miles = 1,61km
pound = 0,454kg

Когда заданы все правила перевода, мы запускаем калькулятор, но почему-то получаем ошибку:

❌ SyntaxError: Invalid Decimal Literal

Что это значит: Python встретил странное десятичное число, с которым он не знает как работать дальше. Официально говоря — неверный десятичный литерал. Звучит умно, сейчас расскажем, что это значит.

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

  • десятичное значение содержит буквы;
  • идентификатор начинается с цифры.

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

  • 3.14x;
  • 13kg;
  • 5y;
  • 700m.

То же самое с идентификаторами — произвольными именами переменных, функций, классов и так далее. В Python любой литерал, который начинается с цифр, считается десятичным, независимо от того, на какой стороне оператора он находится. Поэтому, если идентификатор начинается с цифры, Python считает его десятичным литералом:

  • 1variable;
  • 100_words.

Если так назвать переменную (которая начинается с цифры) — это тоже будет ошибкой.

Что делать с ошибкой SyntaxError: Invalid Decimal Literal

Чтобы разобраться с ошибкой, поговорим сначала о литералах — представлениях какого-то фиксированного значения в программе. Вот примеры разных литералов:

  • ‘Привет, Код!’ — строковый литерал;
  • 5 — числовой литерал;
  • [1, 2, 3, 4] — литерал списка;
  • True — логический литерал;
  • None — специальный литерал.

Десятичный литерал — это числовой литерал, который содержит десятичную точку, например 3.14.

Вот пример десятичного литерала в качестве аргумента:

# вызываем функцию с числовым аргументом
addPrice(1045)

Чтобы решить проблему с ошибкой SyntaxError: Invalid Decimal Literal, нужно удалить буквы в числовых значениях.

miles = 1,61
pound = 0,454

А если идентификатор начинается с цифр, нужно либо их удалить, либо написать буквами:

# этот код выдаст ошибку
1variable = 123
# а это правильный код
variable = 123

# этот код выдаст ошибку
100_words = range(0, 100)
# а это правильный код
hundred_words = range(0, 100)

Обложка:

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

Корректор:

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

Вёрстка:

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

Соцсети:

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

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