← Все вопросы
ValueError: invalid literal for int() with base 10 — как исправить?
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.
Ваш ответ
Войдите, чтобы ответить на вопрос.