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 forint() 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 forint() with base 10: '' >>> int('5.0') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal forint() 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))