Si la entrada en el input es un número, ¿por qué hay que convertirlo en número?
lo que tu aqui llamas 'numero' no es mas que una cadena compuesta exclusivamente de caracteres '0123456789' (mas el '.' si es un numero real). luego si tu en el input sabes que se deben introducir solo numeros, debes convertir la cadena a un entero o real para poder operar con ese numero.
¿Por qué retorna un string?
pues simplemente porque la funcion esta hecha asi, y supongo que es porque es el caso mas general. luego tu puedes hacerte una funcion tuya que sea solo para leer numeros, en la que no tendras mas que un input y luego deberas recorrer la cadena que retorna mirando que todos los caracteres sean numeros y que haya como maximo 1 punto. despues de eso, solo te faltaria convertirlo a int o float dependiendo de si hay un punto o no, y retornar el numero resultante. igual ya viene 'de serie' en python, pero no estoy muy metido en este lenguaje.
un saludo!