변수·자료형·형변환
1 / 18

변수와 자료형

데이터를 보관하고 이해하기

기억해야 할 정보를 안전하게 저장하고 형변환하는 규칙

오늘의 수업 목표

  • 변수의 개념을 모델링하고 데이터를 저장하여 출력할 수 있다.
  • 대입 연산자(=)의 저장 원리를 설명할 수 있다.
  • 파이썬 기본 자료형 4가지를 알고 타입 변경(형변환)을 수행할 수 있다.

왜 배워야 할까요?

컴퓨터가 아무리 복잡하고 대단한 계산을 할 수 있어도, 그 값을 기억해 두는 능력(변수)이 없다면 프로그램은 매번 모든 과정을 처음부터 다시 실행해야 할 것입니다.

또한 문자와 숫자를 엄격히 구분하는 컴퓨터의 규칙을 이해하고 형변환을 제어할 수 있어야 오류 없이 데이터를 정확하게 처리하는 스마트한 프로그램을 작성할 수 있습니다.

일상에서의 변수 비유

이사를 갈 때 물건들을 종류별로 상자에 담는 과정과 동일합니다.

  • 보관 상자: 컴퓨터 메모리 내의 임시 저장 영역
  • 상자 이름표: 변수명 (예: player_hp, score)
  • 보관할 내용물: 데이터값 (예: 100, "홍길동")

프로그래밍은 필요할 때마다 이름표가 붙은 상자에서 데이터를 꺼내 쓰는 연산입니다.

변수와 대입 연산자 (=)

오른쪽(우변)에 있는 데이터를 왼쪽(좌변)의 변수 상자에 집어넣는 동작을 수행합니다.

# score 변수 상자를 만들어 정수 95 저장 (score <- 95)
score = 95
print(score)  # 95

# 값 덮어쓰기 (기존의 95는 사라지고 100이 채워짐)
score = 100
print(score)  # 100

* 수학의 '같다'가 아니라, 값을 변수에 넣는 '대입/저장'의 명령 기호입니다.

수학의 등호(=) vs 프로그래밍의 대입(=)

모양은 똑같지만 의미와 연산의 방향이 완전히 다릅니다.

  • 수학의 = (같음): A = B와 B = A는 완전히 같은 뜻입니다. (예: 10 = x)
  • 프로그래밍의 = (대입): A = B는 B의 값을 A에 집어넣으라는 뜻입니다. (방향: A ← B)

수학에서는 에러지만 프로그래밍에선 정상인 식:

# 수학적으로는 모순이지만, 프로그래밍에선 1을 증가시키는 코드
x = x + 1

# 수학에선 가능하지만, 프로그래밍에선 상자가 우변이어서 에러인 코드
# 10 = x  -> SyntaxError

왜 변수 상자에 값을 꼭 넣어야 할까요?

상자만 만들어두고 데이터를 채워 넣지 않으면 오류가 발생합니다.

  • 컴퓨터는 내용물이 없는 빈 상자의 이름을 부르면 "존재하지 않는 빈 변수(NameError)"라며 시스템을 멈춥니다.
  • 따라서 x = 0 처럼 대입 연산자 =를 활용해 초기값을 반드시 채워 넣는 작업이 선행되어야 합니다.

변수 작명 시 지켜야 할 규칙

  • 알파벳, 숫자, 밑줄(_)만 가능 (띄어쓰기나 하이픈은 사용 불가능)
  • 시작은 반드시 문자나 밑줄로 해야 함 (숫자 시작 불가)
  • 대소문자를 명확히 분류함 (score와 SCORE는 다른 변수)
  • 파이썬 예약어(if, for, list 등)는 변수명으로 불가능

왜 서로 다른 자료형(타입)을 나눌까요?

데이터의 종류에 따라 컴퓨터가 수행해야 하는 역할이 완전히 다르기 때문입니다.

  • 숫자형 (int/float): 사칙연산 (덧셈, 곱셈 등)을 진행합니다.
  • 문자열 (str): 글자 이어붙이기, 찾기, 자르기 등 텍스트 연산을 진행합니다.
  • 불리언 (bool): 조건에 따른 참/거짓 분기 판단을 진행합니다.

컴퓨터에게 데이터의 성격을 정확하게 알려주어 올바른 연산을 수행하게 만들기 위해 자료형을 구분하여 다룹니다.

파이썬 타입의 비밀: 동적 타이핑

파이썬은 변수를 만들 때 타입을 직접 적지 않아도 잘 작동합니다.

  • 타 언어 (C, Java): 자료형을 필수로 적음. int score = 100;
  • 파이썬: 대입하는 값을 보고 컴퓨터가 자동으로 타입을 결정합니다. score = 100 (int로 자동 지정)

타입을 명시적으로 적지 않을 뿐, 파이썬의 모든 변수 상자는 내부적으로 엄격한 자료형을 가지고 동작합니다.

기본 자료형 4종 분류

타입파이썬 타입예시주요 용도
정수int42, -5, 0딱 떨어지는 개수, 순서
실수float3.14, 5.0소수점이 있는 정밀 연산
문자열str"홍길동"텍스트 및 이름 등
불리언boolTrue, False참/거짓 판단 상태

나눗셈 결과의 자료형 변화

파이썬에서는 정수끼리 연산해도 일반 나누기(/)를 거치면 무조건 실수형이 됩니다.

print(10 / 2)   # 5.0 (정수 형태가 아님)

# 몫 나누기 (//) - 소수점 아래는 다 버리고 정수 몫만 얻음
print(10 // 2)  # 5

# 나머지 구하기 (%)
print(10 % 3)   # 1

형변환 (Type Casting)

연산이 가능하도록 자료의 성질을 다른 성질로 유도합니다.

# 문자열 "100"을 계산용 숫자로 변환
val = int("100")
print(val + 10) # 110

# 정수를 실수로, 실수를 정수(소수점 이하 버림)로 변환
print(float(5))  # 5.0
print(int(3.99)) # 3

변수 값 교환 (Swap) — 임시 변수 방식

대부분의 언어에서 통용되는 고전적인 방법 — 빈 컵(temp)에 잠시 옮겨 담기

left = "방패"
right = "칼"

# Step 1: left 값을 임시로 보관
temp = left       # temp = "방패"

# Step 2: left에 right 값을 덮어씌움
left = right      # left = "칼"

# Step 3: right에 원래 left 값을 넣음
right = temp      # right = "방패"

print("왼손:", left, "오른손:", right)
# 왼손: 칼 오른손: 방패

변수 값 교환 (Swap) — 파이썬 한 줄 방식

파이썬 전용 튜플 패킹/언패킹 문법 — 임시 변수 없이 단 한 줄로 교환

left = "방패"
right = "칼"

# 파이썬만 가능한 한 줄 Swap
left, right = right, left

print("왼손:", left, "오른손:", right)
# 왼손: 칼 오른손: 방패

두 Swap 방법 비교

상황에 따라 올바른 방식을 선택하세요.

임시 변수(temp) 방식 파이썬 한 줄 방식
코드 줄 수 3줄 1줄
사용 언어 C, Java, Python 등 대부분 Python 전용
원리 빈 컵(temp)에 잠시 옮겨 담기 튜플 패킹 후 동시 언패킹

흔히 겪는 형변환 오류

형변환에 실패하여 발생하는 ValueError

# 1. 쌩뚱맞은 일반 문자 정수화 시도
# int("hello") -> Error!

# 2. 소수점 문자열 정수화 시도
# int("3.14") -> Error!
# -> 해결책: float를 먼저 적용
num = int(float("3.14"))
print(num) # 3

핵심 정리 요약

용어 / 도구한 줄 요약
변수데이터를 임시 저장하는 라벨 붙은 보관함
대입 연산자 (=)우변의 연산 결과를 좌변의 변수에 할당
자료형 4종int, float, str, bool
나누기 (/)결과는 무조건 float 상태가 됨
형변환타입 가공 (예: int(), str())
ESC — 수업으로 돌아가기  ·  F — 전체화면