Ошибка возникает потому, что функция input в python всегда возвращает строку, независимо от того, что именно ввёл пользователь, даже если это выглядит как число.
Причина в том, что питон не знает заранее, собираетесь вы использовать введённые данные как текст или как число, и не пытается угадывать тип автоматически, в отличие от некоторых других языков. Чтобы превратить строку в число, её нужно явно обернуть в int() для целых чисел или float() для дробных: number = int(input()).
Если строка содержит не только цифры, например пробелы по краям, int() их спокойно проигнорирует, а вот буквы или запятую вместо точки в дробном числе int и float не примут и вызовут ValueError. Для защиты от некорректного ввода такие места стоит оборачивать в try except.
Ответить на вопрос