이번 글에서는 파이썬에서 사용자와의 상호작용을 위한 입력 명령어인 input명령어를 알아보겠습니다. 또한 자료형을 변환하는 방법에 대해 살펴보겠습니다.
입력 명령어
프로그래밍의 기본은 입력과 출력입니다. print()가 기본 출력 명령어라면, input()은 기본 입력 명령어입니다. 다음과 같이 IDLE에 입력해 보세요.
input()
입력 커서가 깜빡이며 사용자의 입력을 기다릴 것입니다. 커서에 '파이썬'을 입력하면 아래와 같은 결과를 확인할 수 있을 것입니다.
파이썬
'파이썬'
input() 명령어는 사용자가 입력한 내용을 프로그래밍의 과정에 반영하는 명령어입니다. 입력된 내용을 반환하기는 하지만, 어딘가에 저장하고 있지는 않아요. 그래서 변수와 함께 사용하는 것이 좋아요. 또한, 입력되는 내용은 문자열의 형태로 저장됩니다. 그래서 숫자를 입력하더라도 문자열로 저장된다는 것을 기억해 두세요.
- input() 명령어로 입력받은 값은 문자열 자료형으로 처리된다.
- input() 명령어는 변수와 함께 사용하자.
다음과 같은 코드를 작성해 확인해 보세요.
input_value = input() # 5+3 입력
print(input_value) # 8이 아닌 '5+3'이 출력
print명령어만을 활용하여 print(5+3)을 실행하면 8이라는 값을 계산하여 출력하겠지만, input으로 넘겨준 5+3은 문자열로 처리되기 때문에 '5+3' 그대로 출력이 됩니다.
변수에 입력값 저장하기
앞서 이야기 했듯이, input으로 입력 받은 값은 변수와 함께 사용하는 것이 좋습니다. input값의 실행 직후에는 문자열로 처리된 값을 반환하지만 어딘가에 저장하지 않기 때문이에요. 그리고, 변수에 저장할 때 다양한 방법으로 활용할 수 있습니다. 다음과 같은 코드를 작성해 봅시다.
user_input = input("이름을 입력하세요: ")
print(f"안녕하세요, {user_input}님!")
출력 결과는 다음과 같아요.
이름을 입력하세요: 홍길동
안녕하세요, 홍길동님!
input 명령어가 실행되면서 input 명령어 안에 작성된 문자열이 출력되고 사용자의 입력을 기다리는 커서가 나타납니다. 그래서 사용자가 잘 인지할 수 있도록 고려하여 문구를 작성하는 것이 좋습니다. 사용자가 무엇을 경험하느냐 하는 것을 UX(user experience)라고 합니다. 프로그래밍의 기술이 향상될수록 사용자의 경험을 고려하는 자세가 필요해요.
두 수 입력 받아 더하는 프로그램
input() 함수를 활용한 간단한 덧셈 프로그램을 만들어 보려고 합니다.
기본 아이디어
num1 = input("첫 번째 숫자를 입력하세요: ")
num2 = input("두 번째 숫자를 입력하세요: ")
print(num1 + num2)
사용자에게 첫 번째 수를 입력 받아 num1에 저장합니다. 마찬가지로 두 번째 수를 입력 받아 num2에 저장합니다. num1과 num2를 더한 결과를 출력합니다. 그런데, 문제가 있습니다. input 함수로 넘겨 받은 값은 숫자라고 하더라도 문자열로 처리되기 때문에, 정상적인 덧셈 결과를 출력할 수 없습니다. 어떻게 해야 할까요?
형변환
우리는 숫자 자료형의 입력이 필요한데, input 함수는 입력 받은 값을 무조건 문자열 자료형으로 처리하기 때문에 문제가 생깁니다. 이와 같이 자료형이 달라 문제가 생기는 경우에는 형변환을 해주어야 합니다. 문자열 자료형을 숫자 자료형으로, 또는 숫자 자료형을 문자열 자료형으로 변환해 주는 것입니다. 다음과 같은 명령어로 형변환을 할 수 있어요.
- int(): 자료를 정수형으로 변환
- float(): 자료를 실수형으로 변환
- str(): 자료를 문자열 자료형으로 변환
int() 명령어를 사용하여 다음과 같은 형변환을 해보세요.
# 정수로 변환
print(int("5")) # 5
print(int(3.14)) # 3
형변환에 실패하는 경우
다음과 같은 경우에는 형변환을 할 수 없습니다.
int("가나다"): 데이터가 문자인 경우 정수형으로 변환할 수 없어요.
int("3.14"): 문자열 형태의 실수는 바로 정수형으로 변환할 수 없어요.
정수형으로 입력 받기
일반적으로 입력 받은 값을 정수형으로 변환하려면 다음과 같은 로직의 코드를 작성해야 합니다.
num1 = input("첫 번째 숫자를 입력하세요: ")
num2 = input("두 번째 숫자를 입력하세요: ")
# 문자열 → 정수 변환
num1 = int(num1)
num2 = int(num2)
print(f"두 수의 합은 {num1 + num2}입니다.")
먼저, input 명령어로 사용자에게 값을 입력 받아 변수에 저장하고, 변수 자체를 형변환하여 다시 변수에 할당하는 방법입니다. 출력 결과는 다음과 같습니다.
첫 번째 숫자를 입력하세요: 5
두 번째 숫자를 입력하세요: 3
두 수의 합은 8입니다.
만약 이러한 과정이 코드가 길어지고 불편하다면 입력과 동시에 형변환을 할 수 있어요.
num1 = int(input("첫 번째 숫자를 입력하세요: "))
num2 = int(input("두 번째 숫자를 입력하세요: "))
print(f"두 수의 합은 {num1 + num2}입니다.")
input 명령어 자체를 int 명령어에 포함시켜서 입력과 동시에 형변환을 하는 것입니다. 출력 결과는 같은 것을 알 수 있어요.
첫 번째 숫자를 입력하세요: 5
두 번째 숫자를 입력하세요: 3
두 수의 합은 8입니다.
만약, 실수 입력 값을 처리하려면 int()명령어의 실행 결과 오류 또는 오차가 발생하기 때문에, float()명령어를 활용하면 됩니다.
마치며
이번 글에서는 파이썬의 input 명령어와 형변환에 필요한 int, float, str 명령어에 대해 알아보았습니다. input 명령어는 항상 입력된 값을 문자열 형으로 처리한다는 것과, 변수와 함께 사용하는 것이 좋다는 것을 기억해 두세요.