← Все вопросы

ValueError: invalid literal for int() with base 10 — где у меня лишний символ?

Задан 24 месяца назад435 просмотров2 ответа
5

Считываю число, а программа падает:

n = int(input("Введите число: "))

Ввёл 12 (с пробелом / а иногда 12.5) и получаю ValueError: invalid literal for int() with base 10: '12.5'. Что это значит?

2 ответа

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

int() умеет превращать в число только строку, которая выглядит как целое число. Строки '12.5', '12,5', '12px', 'двенадцать' для него непонятны — отсюда ValueError: invalid literal.

  • Если ждёшь дробное — используй float():
x = float(input())  # '12.5' -> 12.5
  • Если в строке есть лишние пробелы — питон их обычно срезает сам, но точку/буквы он не простит.

Для целого числа вводи именно целое, без точки.

4

Если данные приходят "грязные" и хочется не падать, а попросить ввести заново — оберни в try/except:

try:
    n = int(input())
except ValueError:
    print("Это не целое число")

Ваш ответ

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