1. Official Python Documentation: The input() function is documented to always return a string. For arithmetic operations, this string must be converted. "The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that."
Source: Python 3 Documentation, The Python Standard Library, §4.1. Built-in Functions, input(). (docs.python.org/3/library/functions.html#input)
2. Official Python Documentation: The numeric types int and float support the exponentiation operator (), while strings do not. Type conversion functions like int() and float() are necessary to convert strings to numbers.
Source: Python 3 Documentation, The Python Tutorial, §3.1.1. Numbers. (docs.python.org/3/tutorial/introduction.html#numbers)
3. University Courseware: MIT OpenCourseWare materials for introductory Python courses explicitly cover the necessity of casting the string result of input() to a numeric type like int or float before performing mathematical calculations.
Source: MIT OpenCourseWare, 6.0001 Introduction to Computer Science and Programming in Python, Fall 2016, Lecture 2: Objects in Python, Section on "Input/Output". (ocw.mit.edu)