03. 파이썬 변수

파이썬 변수의 생성과 활용 과정 — 데이터에 이름표를 붙여 상자에 담고 필요할 때마다 꺼내 쓰거나 갱신한다.

3.1. 변수란 무엇인가?

변수(Variable)를 가장 쉽게 이해하는 방법은 이름표가 붙은 상자로 생각하는 것이다.

집에 상자가 있고 그 상자에 "장난감"이라는 이름표가 붙어 있다고 생각한다. 상자 안에 장난감을 넣어두면, 나중에 "장난감 상자"를 찾으면 꺼낼 수 있다. 프로그래밍에서 변수도 마찬가지로 데이터를 저장해두고 이름으로 꺼내 사용할 수 있다.

3.2. 변수를 왜 사용하는가?

변수가 없다면 아래처럼 같은 값을 계속 반복해서 써야 한다.

print("홍길동의 점수는", 85, "점입니다.")
print(85, "점은 합격입니다.")

위 코드에서 점수를 90으로 바꾸고 싶으면 85 를 두 곳 모두 수정해야 한다. 하지만 변수를 사용하면 한 곳만 바꿔도 된다.

score = 85
print("점수:", score, "점입니다.")
print(score, "점은 합격입니다.")

이제 score = 85score = 90 으로 단 한 곳만 수정하면 모든 출력이 자동으로 바뀐다.

3.3. 변수 만들기

변수를 만드는 방법은 간단하다. 변수이름 = 저장할 값 형식으로 작성한다.

여기서 = 는 수학의 "같다"가 아니라 "오른쪽 값을 왼쪽 변수에 저장하라"는 의미이다.

name = "홍길동"
age = 20
height = 175.5
is_student = True
설명
1name 이라는 상자에 "홍길동" 이라는 글자를 저장한다.
2age 라는 상자에 숫자 20 을 저장한다.
3height 라는 상자에 소수 175.5 를 저장한다.
4is_student 라는 상자에 True (참)를 저장한다.

3.4. 변수 사용하기

변수에 저장된 값을 사용할 때는 변수 이름만 쓰면 된다.

name = "홍길동"
age = 20

print(name)
print(age)
print("안녕하세요,", name, "님!")
print(name, "의 나이는", age, "세입니다.")
설명
1~2변수 nameage 에 값을 저장한다.
4print(name)print("홍길동") 과 같은 결과이다. 변수 이름을 쓰면 저장된 값으로 대체된다.
5print(age)print(20) 과 같은 결과이다.
6문자열과 변수를 쉼표로 연결하여 출력한다.
7두 변수를 함께 사용하여 문장을 만들어 출력한다.

실행 결과

홍길동
20
안녕하세요, 홍길동 님!
홍길동 의 나이는 20 세입니다.

변수에 저장된 값의 자료형을 확인할 때는 type() 함수를 사용한다.

x=10
print(x)
y="Y"
print(y)

print(type(y))  # 변수 자료형 확인
print(type(x))  # 변수 자료형 확인

3.5. 변수의 값 바꾸기

변수는 말 그대로 "변하는 수"이다. 같은 변수에 새 값을 넣으면 이전 값은 사라지고 새 값으로 교체된다.

score = 50
print("처음 점수:", score)

score = 80
print("수정된 점수:", score)

score = score + 10
print("보너스 적용 점수:", score)
설명
1score50 을 저장한다.
250 을 출력한다.
4score80 을 새로 저장한다. 이전 값 50 은 사라진다.
580 을 출력한다.
7오른쪽 score + 10 을 먼저 계산한다. 현재 score80 이므로 80 + 10 = 90 이다. 이 결과를 다시 score 에 저장한다.
890 을 출력한다.

실행 결과

처음 점수: 50
수정된 점수: 80
보너스 적용 점수: 90

3.6. 여러 변수 선언하기

여러 변수에 값을 한 번에 대입하여 선언할 수 있다. 변수의 선언 개수와 값의 개수가 같아야 한다.

x,y,z=10,20,30
print(x)
print(y)
print(z)

값이 동일한 여러 개의 변수는 다음과 같이 연속으로 대입하여 선언한다.

x=y=z=10

print(x)
print(y)
print(z)

두 변수의 값을 맞바꿀 때도 다중 대입을 활용하여 교환할 수 있다.

x,y=10,20 # x=10, y=20
x,y=y,x # x=20,y=10
print(x)
print(y)

3.7. 빈 변수 선언하기

변수에 값을 지정하지 않고 빈 상태로 둘 때는 None을 대입하여 선언한다.

x=None

3.8. 변수의 삭제

생성한 변수를 삭제할 때는 del 키워드를 사용한다. 삭제된 변수는 메모리에서 제거되므로 다시 접근하려고 하면 오류가 발생한다.

x=10
print(x)
del x
print(x)

3.9. 변수 이름 짓는 규칙

규칙올바른 예잘못된 예
영문자, 숫자, 언더스코어(_)만 사용player_hpplayer-hp (하이픈 불가)
숫자로 시작 불가hp22hp
공백 사용 불가my_namemy name
대소문자 구분Scorescore 는 별개
파이썬 예약어 사용 불가my_ifif, for, while

변수 이름은 저장하는 내용을 알 수 있게 짓는 것이 좋다. a, b 처럼 의미 없는 이름보다 name, score, hp 처럼 역할이 보이는 이름을 사용한다.

3.10. 변수로 계산하기

변수에 저장된 값을 이용하여 연산을 수행하고 그 결과를 새로운 변수에 저장할 수 있다.

a=10
b=20
c=a+b
print(c)  #30

3.11. 변수의 값을 동적으로 할당하기

3.11.1. input() 함수

input 함수를 사용하여 사용자가 입력한 값을 동적으로 할당한다.

a = int(input('첫 번째 숫자를 입력하세요: '))  #int를 사용하여 값을 정수로 변환
b = int(input('두 번째 숫자를 입력하세요: '))  #int를 사용하여 값을 정수로 변환

print(a + b)
a = input('첫 번째 숫자를 입력하세요: ')
b = input('두 번째 숫자를 입력하세요: ')

int 함수를 사용해서 정수로 변환하지 않을 경우 문자열이 연결되어 출력된다.

실수 형태의 숫자를 입력받을 때는 float() 함수를 사용하여 변환한다.

a = float(input('첫 번째 숫자를 입력하세요: '))
b = float(input('두 번째 숫자를 입력하세요: '))

print(a + b)

3.11.2. input().split() – 문자열 분할

input으로 입력받은 문자열을 나눠서 여러 변수에 저장하는 방법이다.

방법설명코드 예시
split()공백 기준으로 분할a, b = input().split()
split('구분자')지정한 구분자로 분할a, b = input().split(',')
input('문자열').split()안내 메시지와 함께 공백으로 분할a, b = input('두 값 입력: ').split()
input('문자열').split('기준문자열')안내 메시지와 함께 특정 문자로 분할a, b = input('쉼표로 입력: ').split(',')
# 1. split() - 공백으로 분할
a, b = input('문자열 두 개를 입력하세요: ').split()
print(a)
print(b)

# 2. split('구분자') - 쉼표로 분할
x, y = input().split(',')
print(f"x: {x}, y: {y}")

# 3. input('문자열').split() - 안내 메시지와 함께 공백 분할
name, age = input('이름과 나이 입력: ').split()
print(f"이름: {name}, 나이: {age}")

# 4. input('문자열').split('기준문자열') - 안내 메시지와 특정 문자로 분할
fruit1, fruit2 = input('과일 두 개를 쉼표로 입력: ').split(',')
print(f"첫번째: {fruit1}, 두번째: {fruit2}")

f""는 Python 3.6부터 추가된 문자열 포맷팅 방법으로, 문자열 안에 변수 값을 쉽게 넣을 수 있다.

3.11.3. map

여러 값에 같은 함수를 한 번에 적용하는 함수를 사용하여 반복 작업을 줄일 수 있다.

#1 입력받은 값을 한번에 정수로 변환
a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
print(a + b)

#2 입력받은 값을 콤마를 기준으로 분리
a, b = map(int, input('숫자 두 개를 입력하세요: ').split(','))
print(a + b)

#3
a, b, c = map(int, input().split())
print(a + b + c)

3번 예시 단계별 설명

1. input()

# 사용자가 입력: 10 20 30
input()  # → '10 20 30' (문자열)

2. .split()

'10 20 30'.split()  # → ['10', '20', '30'] (문자열 리스트)

공백 기준으로 문자열을 나눈다.

3. map(int, ...)

map(int, ['10', '20', '30'])  # → [10, 20, 30] (정수 리스트)

각 문자열을 정수로 변환한다.

4. 변수에 저장

a, b, c = [10, 20, 30]
# a = 10
# b = 20
# c = 30

5. 계산 및 출력

print(a + b + c)  # 10 + 20 + 30 = 60

map(int, ...) 에서 int 뒤에 괄호 ()가 없는 이유:

# ❌ 잘못된 방법
map(int(), input().split())  # 오류 발생!

# ✅ 올바른 방법
map(int, input().split())
  • int() → 함수를 즉시 호출함 (결과: 0)
  • int → 함수 자체를 전달함

map은 함수를 받아서 나중에 실행하기 때문에 괄호 없이 함수 이름만 써야 한다.

댓글 남기기