오류 메시지에서 non-int의 int는 정수(integer)를 뜻하고 str은 문자열(string)을 뜻합니다. 오류의 내용이 ‘정수가 아닌 문자열끼리는 곱할 수 없다’인데 뭔가 이상하죠? 분명히 숫자 10과 20을 입력했는데 갑자기 문자열이라니요.
왜 그런지 이해하려면 자료형을 알아야 합니다. 파이썬의 다양한 자료형 중에는 숫자와 문자열이 있습니다. 숫자와 문자열은 성질이 달라서 숫자는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 사칙연산을 할 수 있지만 문자열은 불가능합니다. 그런데 컴퓨터는 input() 함수로 입력받은 값을 모두 문자열로 읽어들이는 특징이 있습니다. 즉 사용자가 문자를 입력하든 숫자를 입력하든 모두 문자열로 읽어들이기 때문에 변수 num1과 num2에 곱셈 연산이 불가능한 문자열이 저장됩니다.
이를 해결하려면 num1과 num2에 저장되는 값을 숫자로 바꿔야 합니다. 따라서 코드의 input() 함수를 int() 함수로 감쌉니다.