7. 사용자로부터 입력받을 때는 input()을 호출하세요.

안녕하세요. 언휴예요.

앞에서 콘솔에 출력할 때 사용하는 print 함수 사용법을 간략히 알아보았어요. 이번에는 Python에서 사용자로부터 입력받을 때 사용하는 input 함수 사용법을 간략히 알아볼거예요.

input 함수는 출력 문자열을 입력인자로 전달받습니다. 사용자로부터 특정한 값을 입력받고자 할 때 사용자에게 입력할 것이 어떠한 것인지를 나타낼 문자열이죠. 그리고 사용자가 입력한 문자열을 반환합니다.

#사용자로부터 입력받기 1
name = input("이름:")
addr = input("주소:")
[그림 1] input 함수 사용 예
[그림 1] input 함수 사용 예

 그런데 input 함수가 반환하는 값의 형식은 문자열입니다. 이러한 이유로 학생 번호처럼 정수를 입력받고자 할 때 input 함수의 반환값을 그대로 받아 출력해 보면 잘 입력받은 것으로 생각할 수 있어요. 하지만 해당 값이 원하는 범위 내에 있는지 비교를 하거나 계산을 하는 등의 작업을 하려고 하면 정수가 아닌 문자열 형식이어서 버그 혹은 예외를 발생합니다.

#사용자로부터 정수 입력받기 - 버그
num1 = input("첫 번째 정수:")
num2 = input("두 번째 정수:")
print("{0}+{1}={2}".format(num1,num2,num1+num2))
[그림 2] input 함수로 정수 입력받기 - 버그
[그림 2] input 함수로 정수 입력받기 – 버그

위 예제를 보면 input 함수로 두 개의 정수를 입력받은 후에 두 수의 합을 계산하여 출력하는 코드입니다. 그런데 input 함수가 반환한 값을 그대로 사용하고 있어서 실제 반환한 값의 형식은 문자열입니다. 이러한 이유로 입력받은 두 개의 값을 더하였을 때 두 개의 문자열을 합친 문자열을 결과로 출력하고 있음을 알 수 있습니다. 이는 개발자가 원하는 결과가 아니죠.

개발자가 원하는 형식의 값으로 입력받기를 원하면 int(input(…))처럼 원하는 형식 이름과 괄호로 input 함수 호출 구문을 감싸서 사용합니다.

#사용자로부터 원하는 형식으로 입력받기
num1 = int(input("첫 번째 정수:"))
num2 = int(input("두 번째 정수:"))
print("{0}+{1}={2}".format(num1,num2,num1+num2))
[그림 3] 사용자로부터 원하는 형식으로 입력받기
[그림 3] 사용자로부터 원하는 형식으로 입력받기

위 예제는 input함수로 호출한 부분을 int()로 감싸서 결과를 사용하고 있습니다. 이전 예제와 다르게 개발자가 원하는 형태로 동작하는 것을 알 수 있습니다.

여기에서는 사용자가 개발자가 원하는 형식의 값이 아닌 형태로 입력하였을 때 발생하는 문제는 다루지 않을게요. 이 부분은 별도의 예외처리를 해 주어야 합니다. 필요하시면 해당 파트를 확인하세요.