파이썬 교재 · 3편 / 27편

파이썬 변수와 자료형 — str·int·float·bool

상자에 무엇을 담느냐가 동작 전체를 결정합니다. 4가지 기본형 + 변환 + 부동소수점 함정.

입문읽는 시간 7분2026-05-13
파이썬 REPL 에서 str·int·float·bool 변수를 선언하고 type 으로 확인하는 화면

2편 마지막 미션 두 번째 — "이름과 나이를 입력받아 내년 나이 출력" — 에서 막힌 분이 많을 겁니다. age + 1 에서 TypeError. 원인은 자료형입니다. input() 이 돌려준 "30" 은 글자라서, 숫자 1 을 더할 수 없거든요. 자료형은 "상자에 담긴 게 글자인지 숫자인지 참/거짓인지" 를 파이썬에게 알리는 라벨. 잘못 들면 같은 변수도 다르게 동작합니다.

이 글이 끝나면 ① str·int·float·bool 네 가지를 구분하고 ② type() 으로 확인하며 ③ 필요할 때 변환하고 ④ 부동소수점이 왜 0.1+0.2 를 0.3 이 아니라 0.30000000000000004 로 만드는지 압니다.

네 가지 기본 자료형

파이썬에는 자료형이 많지만 입문 4주는 이 넷이면 됩니다. 나머지는 이 넷의 응용이에요.

자료형약자예시주로 담는 것
문자열str"안녕", '30'글자·텍스트·이름·메시지
정수int30, -7, 0개수·나이·인덱스·카운트
실수float1.75, 3.14, -0.5키·온도·확률·비율
참/거짓boolTrue, False조건·플래그·on/off

중요한 구분 — 따옴표가 있느냐. 따옴표로 감싸진 "30" 은 문자열, 그냥 30 은 정수입니다. 같은 30이라도 파이썬에게는 전혀 다른 존재예요.

name   = "준성"     # str — 따옴표 있음
age    = 30        # int — 따옴표 없음
rate   = 1.75      # float — 점이 있으면 자동 float
active = True      # bool — 대문자 시작, 따옴표 없음

boolTrue·False 는 반드시 대문자 시작. true 는 NameError. 자바스크립트에서 온 분들이 자주 틀리는 지점입니다.

type() 으로 무슨 자료형인지 확인

"이 변수가 지금 무슨 자료형이지" 가 헷갈리면 type() 내장 함수에 넣어보세요. <class '타입'> 형태로 알려줍니다.

>>> type("준성")
<class 'str'>
>>> type(30)
<class 'int'>
>>> type(1.75)
<class 'float'>
>>> type(True)
<class 'bool'>
>>> type("30")        # 따옴표 있으니 str!
<class 'str'>

마지막 줄을 잘 보세요. "30" 은 글자 모양일 뿐 자료형은 문자열. 이게 2편 마지막 미션이 막힌 이유입니다.

📌 파이썬은 동적 타입(dynamic typing) 언어

자바·C 는 변수 만들 때 int age = 30 처럼 자료형을 미리 선언해야 합니다. 파이썬은 그냥 age = 30 — 값을 보고 알아서 정해요. 편하지만 함정도 같이 옵니다. 같은 age 변수가 다음 줄에서 age = "서른" 으로 갑자기 문자열이 돼도 막지 않거든요. 18편 "타입 힌트" 에서 이걸 부드럽게 조이는 법을 배웁니다.

변환 — int·str·float 함수로 자료형 갈아끼우기

변수의 자료형을 바꾸려면 해당 자료형 이름을 함수처럼 호출합니다. 마치 상자에서 내용물을 꺼내 다른 라벨의 상자로 옮기는 셈.

>>> int("30") + 1        # str → int 변환 후 더하기
31
>>> str(30) + " years"   # int → str 변환 후 이어붙이기
'30 years'
>>> float("3.14")        # str → float
3.14
>>> int(3.7)             # float → int (소수점 버림, 반올림 X)
3
>>> bool(0), bool(1), bool("")
(False, True, False)

int(3.7) 이 4 가 아니라 3 인 게 포인트. 버림이지 반올림이 아닙니다. 반올림은 round(3.7) = 4 로 별도 함수. 시험 문제 단골 함정.

bool 변환도 알아둘 만해요. 0·빈 문자열·빈 리스트는 False, 그 외는 모두 True. 이걸 "Truthy / Falsy" 라 부르고 7편 if 문에서 본격적으로 씁니다.

2편 미션 해법

name = input("이름: ")
age  = int(input("나이: "))   # 핵심: int() 로 감싸기
print(f"{name}님은 {age}살, 내년엔 {age + 1}살")

int(input(...)) 처럼 함수를 겹쳐 부르는 패턴을 함수 합성이라 부릅니다. 안쪽이 먼저 실행돼 결과를 바깥 함수에 넘겨요. 입문 한 달 안에 자연스러워집니다.

부동소수점의 미친 짓 — 0.1 + 0.2 ≠ 0.3

REPL 에서 다음을 쳐보세요. 충격적인 결과가 나옵니다.

>>> 0.1 + 0.2
0.30000000000000004
>>> 0.1 + 0.2 == 0.3
False

파이썬 버그가 아닙니다. 거의 모든 프로그래밍 언어가 똑같이 동작해요. 원인은 컴퓨터가 실수를 2진수로 저장하기 때문입니다. 0.1 같은 십진수는 2진수로 정확히 표현이 안 돼서, 아주 작은 오차가 누적됩니다. IEEE 754 라는 1985년의 국제 표준이라 모두가 같은 함정을 공유하죠.

⚠️ 돈 계산에는 float 쓰지 마세요. 100원 단위에서 1원이 어긋나는 사고가 실제로 일어납니다. 돈은 decimal.Decimal 또는 정수 원 단위(예: 만원을 10000 으로 저장) 로. 점수·온도·확률처럼 약간의 오차가 의미 없는 곳에만 float.

같음 비교가 필요하면 abs(a - b) < 1e-9 처럼 오차 허용 범위로 비교하세요. math.isclose(a, b) 도 같은 일을 합니다.

마무리 — 자료형은 디버깅의 첫 단추

에러가 났을 때 본인이 가장 먼저 의심해야 할 게 자료형입니다. "이 변수가 지금 str 인가 int 인가"print(type(변수)) 한 줄로 찍어보면 70% 의 문제가 풀려요. 베테랑 개발자도 그 한 줄을 시한 폭탄 해체하듯 매일 씁니다.

다음 미션 — REPL 에서 다음을 시도해보세요. (1) "3" * 3 의 결과 예측 후 확인 (힌트: 문자열 곱하기는 반복) (2) 3 * "3" 도 같은 결과인가? (3) True + True 의 결과 (힌트: bool 은 int 의 부분집합).

다음 편 미리보기

4편 — "파이썬 문자열 다루기": str 자료형을 깊게. 슬라이싱·검색·치환·split·join — 텍스트를 자르고 붙이는 모든 기술.

📚 27편 파이썬 교재 시리즈 — 3/27편
← 2편 "첫 프로그램" · 다음: 4편 "문자열 다루기"

© 2026 주나이테크(주) @JUNAITECH