Вопрос-Ответ

ValueError: invalid literal for int() with base 10: ''

ValueError: недопустимый литерал для int() с основанием 10: "

Я получил эту ошибку из своего кода:

ValueError: invalid literal for int() with base 10: ''.

Что это значит? Почему это происходит и как я могу это исправить?

Переведено автоматически
Ответ 1

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

В случае, описанном в вопросе, входными данными была пустая строка, записанная как ''.

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

>>> int('55063.000000')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'

Вместо этого сначала преобразуйте в float:

>>> int(float('55063.000000'))
55063
Ответ 2

Следующее отлично работает в Python:

>>> int('5') # passing the string representation of an integer to `int`
5
>>> float('5.0') # passing the string representation of a float to `float`
5.0
>>> float('5') # passing the string representation of an integer to `float`
5.0
>>> int(5.0) # passing a float to `int`
5
>>> float(5) # passing an integer to `float`
5.0

Однако передача строкового представления float или любой другой строки, которая не представляет целое число (включая, например, пустую строку типа '') вызовет ValueError:

>>> int('')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''
>>> int('5.0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.0'

Чтобы преобразовать строковое представление числа с плавающей запятой в целое число, сначала будет выполняться преобразование в число с плавающей запятой, а затем в целое число (как объяснено в комментарии @katyhuff к вопросу):

>>> int(float('5.0'))
5
Ответ 3

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

if data:
as_int = int(data)
else:
# do something else

или с использованием обработки исключений:

try:
as_int = int(data)
except ValueError:
# do something else
Ответ 4

Python преобразует число в float. Сначала просто вызовите float, а затем преобразуйте его в int, и это сработает: output = int(float(input))

python