← Все вопросы

ValueError: invalid literal for int() with base 10 — как исправить?

Задан 19 месяцев назад1.2к просмотров3 ответа
13
x = int(input())

Ввожу 12.5 и получаю ValueError: invalid literal for int() with base 10: '12.5'. Почему?

3 ответа

17
✓ Принятый ответ — помог автору

int() парсит только целые без точки. Для 12.5 бери float().

10

Эта ошибка значит, что строку, которую ты передал в int(), нельзя прочитать как целое число. '12.5', 'abc', '12 ' с лишним, пустая строка — всё это её вызывает.

Что делать в зависимости от того, что вводят:

float('12.5')          # если бывают дробные
int(float('12.5'))     # если хочешь именно int, но ввод дробный → 12
int('  42  '.strip())  # если проблема в пробелах (хотя int сам их срежет)

Если ввод бывает мусорный — оборачивай в try/except ValueError и проси ввести заново. И помни: десятичная запятая 12,5 тоже сломает — её надо заменить на точку.

Дмитрий Конопацкий о, у меня запятая была вместо точки, спасибо 🙏 · 19 месяцев назад
4

Через запятую число ввёл? 12,5 не прокатит, нужна точка и float.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект