Рубрики
Без рубрики

Ошибка Invalid literal for int() with base 10 | Причины и решение

Ошибка invalid literal for int() with base 10 вызвана передачей неверного аргумента функции int(). Давайте разберёмся, как исправить эту ошибку.

Автор оригинала: Team Python Pool.

Python-это особый язык, который позволяет очень хорошо обрабатывать ошибки и исключения. Имея тысячи известных исключений и возможность обрабатывать каждое из них, все ошибки легко устраняются из кода. Имея это в виду, мы обсудим ошибку Invalid literal for int() with base 10  (недопустимый литерал для int()) в python.

Ошибка Invalid literal for int() with base 10 возникает при попытке преобразовать недопустимый объект в целое число. В Python функция int() принимает объект, а затем преобразует его в целое число при условии, что он находится в удобочитаемом формате. Поэтому, когда вы пытаетесь преобразовать строку без целых чисел, функция выдаёт ошибку. Эта ошибка относится к категории ValueError, так как значение параметра недопустимо.

Причина возникновения Invalid literal for int() with base 10

ValueError в Python происходит, когда мы передаем неподходящий тип аргумента. Iнедопустимый литерал для int() с базой 10 ошибка вызвана передачей неверного аргумента функции int (). ValueError возникает, когда мы передаем любое строковое представление, отличное от int.

ValueError в Python возникает, когда мы передаем неподходящий тип аргумента. Ошибка недопустимого литерала вызвана передачей неверного аргумента функции int(). Если мы передаем любое строковое представление, отличное от представления int, то генерируется ValueError.

Давайте разберемся в этом подробнее!

ValueError: invalid literal for int() with base 10

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

Рассмотрим пример:

int('1.9')
Недопустимый литерал для int() с примером базы 10

Выход

Может случиться так, что мы можем подумать,что при выполнении приведенного выше кода десятичная часть, то есть “.9”, будет усечена, давая выход 1. Однако этого не происходит, поскольку функция int( ) использует десятичную систему счисления в качестве основы для преобразования. Это означает, что база по умолчанию для преобразования равна 10. В десятичной системе счисления мы имеем числа от 0 до 9. Таким образом, int() with может преобразовывать только строковое представление int, а не поплавки или символы.

Может показаться, что при выполнении вышеуказанного кода десятичная часть, т.е. «.9», будет усечена, давая на выходе 1. Однако этого не происходит, поскольку функция int() использует десятичную систему счисления в качестве основы для преобразования. Это означает, что основание для преобразования по умолчанию равна 10. В десятичной системе счисления мы имеем числа от 0 до 9. Таким образом, int() с основанием = 10 может преобразовывать только строковое представление целых чисел (int), а не дробных (float) или символы (char).

Давайте рассмотрим несколько примеров, где эта ошибка может возникнуть:

Пример 1:

print(int("pythonpool"))
пример 1

В этом примере значение “python pool” – это строковое значение, передаваемое функции int(), которое приводит к ошибке.

Пример 2:

print(int("41.1"))
пример 2

Поскольку значение, которое мы использовали здесь, является float внутри строки, это приводит к ошибке недопустимого литерала для int().

Пример 3:

print(int("[12]"))
пример 3 Недопустимый литерал для int() с основанием 10

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

Пример 4:

print(int("(12)"))
недопустимый литерал пример 4

Ошибка invalid literal для int() возникает из-за того, что мы использовали кортеж внутри строки.

Пример 5:

print(int("{12:1}"))
словарь внутри строки, который приводит к ошибке

Здесь мы использовали словарь внутри строки, который приводит к ошибке.

Пример 6:

print(int(""))
недопустимый литерал для int() с базой 10 пример 6

Ошибка возникает в этом коде, так как мы использовали пустую строку в функции int().

Разрешение ошибки: invalid literal for int() with base 10:

Использование float() для преобразования десятичных чисел:

print(int(float('1.9')))
1

Здесь мы сначала преобразовали строковое представление в float с помощью функции float(). Затем мы использовали функцию int() для преобразования его в целое число.

Использование try-catch для разрешения invalid literal for int() with base 10

try:
   ("12.1")
except:
    print("Error in converting to string")

Здесь мы использовали конструкцию try-catch, чтобы избавиться от ошибки invalid literal for int() with base 10. Если ошибка возникает внутри блока try, она перехватывается в блоке catch, тем самым предотвращая ошибку.

Использование isdigit():

x="12"
if x.isdigit():
    x=int(x)
    print(type(x))
<class 'int'>

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

Использование isnumeric():

x="12"
if x.isnumeric():
    x=int(x)
    print(type(x))
<class 'int'>

isnumeric() это метод строки который возвращает логическое значение, указывающее, является ли строка числом. Если строка содержит число, то мы преобразуем его в int, иначе нет.

Вывод:

На этом мы заканчиваем нашу статью. Это был простой способ избавиться от ValueError в Python. Если вышеприведенный метод не работает, то необходимо проверить строку и убедиться, что она не содержит ни одной буквы.

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

Счастливого кодирования!