[파이썬 입문] 2. 자료형 – 3) 변수와 기본 input

변수 사용

프로그램에서 사용할 데이터를 기억해 두었다가 필요할 때 사용하기 위한 문법으로 변수를 제공합니다.

파이썬에서는 별도의 선언문 없이 변수에 값을 대입하는 형태로 사용할 수 있습니다.

다음은 사각형의 면적을 계산하기 위해 너비와 높이를 변수에 대입하여 사용하는 예제 코드입니다.

[In]
width = 10
height = 15
rect_area = width * height
print("너비:",width, "높이:",height, "사각형 면적:",rect_area)
[Out]
너비: 10 높이: 15 사각형 면적: 150

기본 입력 input

사용자로부터 값을 입력받아 변수에 대입하고자 한다면 input함수를 사용하세요.

input 함수는 화면에 출력할 내용을 전달합니다.

다음은 이름과 번호를 입력받아 출력하는 예제 코드입니다.

[In]
name = input("이름:")
num = input("번호:")
print("이름:",name, "번호:",num)
[Out]
이름:홍길동
번호:23
이름: 홍길동 번호: 23

그런데 input 함수가 반환하는 값은 문자열 형식입니다. 출력했을 때는 정수나 문자열이 차이가 없어 보이지만 연산에서는 차이가 발생합니다.

만약 다음처럼 두 개의 정수를 입력받아 합계를 구한다고 가정해 봅시다.

[In]
n1 = input("첫 번째 수:")
n2 = input("두 번째 수:")
print("첫 번째:",n1, "두 번째:",n2)
print("합계:",n1+n2)
[Out]
첫 번째 수:21
두 번째 수:34
첫 번째: 21 두 번째: 34
합계: 2134

보시는 것처럼 21과 34를 입력하였을 때 더한 결과가 55가 아닌 2134임을 알 수 있습니다.

n1의 타입을 확인해 보면 문자열(str)인 것을 알 수 있어요.

[In]
print(type(n1))
[Out]
<class 'str'>

문자열을 숫자로, 숫자를 문자열로

앞에서 input 함수의 반환 값은 문자열 형식임을 확인하였습니다.

만약 정수를 입력받고자 한다면 input 함수가 반환한 값을 정수 형식으로 변환해야 합니다.

파이썬에서 형식명(표현)을 통해 형식을 변환할 수 있어요.

다음은 앞에서 입력받은 n1과 n2를 정수 형식으로 변환한 후 더하는 예제 코드입니다.

[In]
n1 = int(n1)
n2 = int(n2)
print("첫 번째:",n1, "두 번째:",n2)
print("합계:",n1+n2)
[Out]
첫 번째: 21 두 번째: 34
합계: 55

다음 코드는 input 함수를 호출한 결과를 바로 정수 형식으로 변환하는 예제입니다.

[In]
korea = int(input("국어 점수:"))
math = int(input("수학 점수:"))
print("국어:",korea, "수학 점수:",math, "합계:",korea+math)
[Out]
국어 점수:98
수학 점수:99
국어: 98 수학 점수: 99 합계: 197

문자열 형식으로 바꾸고 싶다면 str(표현) 을 사용합니다.

다음은 정수 형식 korea와 math를 문자열로 변환하여 타입을 확인하는 예제 코드입니다.

[In]
k_str = str(korea)
print(type(korea),type(k_str))
print(korea,k_str)

m_str = str(math)
print(type(math),type(m_str))
print(math,m_str)
[Out]
<class 'int'> <class 'str'>
98 98
<class 'int'> <class 'str'>
99 99

다음은 정수 형식 변수끼리, 문자열 형식 변수끼리 더하기 연산을 수행한 결과를 보여주는 코드입니다.

[In]
print(korea+math, k_str+m_str)
[Out]
197 9899

사용자로부터 실수를 입력받을 때는 float(input(프롬프트)) 를 사용하세요.

[In]
pi = float(input("파이:"))
print(pi)
print(type(pi))
[Out]
파이:3.14
3.14
<class 'float'>