[파이썬 개념 2] 자료형

2026-11-09 21:36 ·수정 2026-11-10 11:45

17과 "17"은 화면에서는 비슷해 보이지만 파이썬에게는 완전히 다른 값입니다. 하나는 계산할 수 있는 수이고, 하나는 글자입니다.
값의 종류를 자료형이라고 합니다. 자료형에 따라 할 수 있는 일이 달라지므로, 오류의 상당수는 자료형을 헷갈려서 생깁니다.

1. 기본 자료형 네 가지

자료형 이름 뜻 예
int 정수 소수점이 없는 수 17, -3, 0
float 실수 소수점이 있는 수 3.14, 0.5, 2.0
str 문자열 글자들의 나열 "hello", '17', ""
bool 논리형 참과 거짓 True, False

type() 으로 자료형을 확인할 수 있습니다.

print(type(17))
print(type(17.0))
print(type("17"))
print(type(True))

실행 결과

<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>

17과 17.0은 값은 같지만 자료형이 다릅니다. 소수점을 찍으면 실수입니다.

2. 정수 int

파이썬의 정수는 크기 제한이 거의 없습니다. 아주 큰 수도 그대로 계산합니다.

print(2 ** 100)
print(-7 + 3)

실행 결과

1267650600228229401496703205376
-4

3. 실수 float

나누기 / 의 결과는 나누어떨어져도 항상 실수입니다.

print(6 / 2)
print(type(6 / 2))

실행 결과

3.0
<class 'float'>

정수와 실수를 함께 계산하면 결과는 실수가 됩니다.

print(3 + 0.5)
print(2 * 1.0)

실행 결과

3.5
2.0

실수에는 아주 작은 오차가 있다

컴퓨터는 실수를 2진수로 저장하기 때문에 0.1 같은 수를 정확히 담지 못합니다.

print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)

실행 결과

0.30000000000000004
False

그래서 실수를 출력할 때는 자릿수를 정하고(f"{값:.2f}"), 실수끼리 == 로 비교하는 일은 되도록 피합니다.
계산 순서에 따라 결과가 미세하게 달라지기도 합니다.

n, p = 100, 57
print(n * p / 100)
print(n * (p / 100))
print(int(n * (p / 100)))

실행 결과

57.0
56.99999999999999
56

같은 계산처럼 보여도 마지막 줄은 57이 아니라 56이 되었습니다. 정수로 계산할 수 있는 것은 정수로 계산하는 편이 안전합니다(n * p // 100).

4. 문자열 str

작은따옴표나 큰따옴표로 감쌉니다. 둘 중 무엇을 써도 되지만 시작과 끝이 같아야 합니다.

a = "hello"
b = 'world'
c = "It's"
d = '그는 "안녕"이라고 말했다'
print(a, b, c, d)

실행 결과

hello world It's 그는 "안녕"이라고 말했다

글자 안에 작은따옴표가 있으면 큰따옴표로, 큰따옴표가 있으면 작은따옴표로 감싸면 됩니다.

문자열의 연산

print("3" + "4")      # 이어 붙이기
print("하" * 3)        # 반복
print(len("python"))  # 글자 수
print("py" in "python")

실행 결과

34
하하하
6
True

숫자끼리 + 는 더하기, 문자열끼리 + 는 이어 붙이기입니다. 같은 기호가 자료형에 따라 다르게 동작합니다.

특수 문자

쓰는 법 뜻
\n 줄바꿈
\t 탭
\\ 역슬래시 자체
\" 큰따옴표 자체
print("첫 줄\n둘째 줄")
print("이름\t점수")

실행 결과

첫 줄
둘째 줄
이름  점수

5. 논리형 bool

참은 True, 거짓은 False 입니다. 첫 글자는 반드시 대문자입니다. 비교한 결과가 이 값입니다.

print(10 > 3)
print(10 == 3)
print(type(10 > 3))

실행 결과

True
False
<class 'bool'>

6. 자료형 바꾸기 (형 변환)

함수 하는 일 예 결과
int() 정수로 int("17"), int(3.9) 17, 3
float() 실수로 float("3.5"), float(2) 3.5, 2.0
str() 문자열로 str(17) "17"
bool() 논리형으로 bool(0), bool("a") False, True
print(int("17") + 3)
print(int(3.9))
print(int(-3.9))
print(round(3.9))

실행 결과

20
3
-3
4
  • int() 는 실수의 소수점 아래를 버립니다(0 쪽으로). 반올림이 아닙니다.
  • 반올림이 필요하면 round() 를 씁니다.

바꿀 수 없는 경우

print(int("3.5"))

실행 결과

ValueError: invalid literal for int() with base 10: '3.5'

int() 는 정수 모양의 문자열만 바꿀 수 있습니다. "3.5" 는 int(float("3.5")) 처럼 두 번에 나누어 바꿉니다.
"abc" 처럼 숫자가 아닌 글자는 어떤 방법으로도 수로 바꿀 수 없습니다.

자료형이 섞이면

age = 17
print("나이: " + age)

실행 결과

TypeError: can only concatenate str (not "int") to str

문자열과 정수는 + 로 이을 수 없습니다. 해결 방법은 세 가지입니다.

age = 17
print("나이: " + str(age))
print("나이:", age)
print(f"나이: {age}")

실행 결과

나이: 17
나이: 17
나이: 17

7. 참과 거짓으로 보는 값

조건문에서는 True, False 가 아닌 값도 참이나 거짓으로 판단합니다.

거짓으로 보는 값 참으로 보는 값
0, 0.0, ""(빈 문자열), [](빈 리스트) 그 밖의 모든 값
print(bool(0), bool(5), bool(""), bool("0"), bool([]))

실행 결과

False True False True False

"0" 은 글자 0이 들어 있는 문자열이므로 참입니다.

정리

  • 자료형은 int, float, str, bool 네 가지부터 익힌다. type() 으로 확인한다.
  • / 의 결과는 항상 실수이고, 실수에는 작은 오차가 있다.
  • 문자열은 따옴표로 감싸며, + 는 이어 붙이기, * 는 반복이다.
  • int(), float(), str() 로 바꾼다. int() 는 버림, round() 는 반올림.
  • 문자열과 수를 섞어 쓰려면 자료형을 맞추거나 f-문자열을 쓴다.

확인 문제

  1. 다음 값들의 자료형을 쓰세요. 3, 3.0, "3", 3 > 2, 7 / 7
  2. int(2.99) 와 round(2.99) 의 결과는 각각 무엇인가요?
  3. 다음 코드의 결과를 예측하세요.
    a = "5"
    b = 2
    print(a * b)
    print(int(a) * b)

연습해 보기

확인 문제 정답

  1. int, float, str, bool, float (/ 의 결과는 항상 실수)
  2. 2 와 3
  3. 55 와 10 : 첫 줄은 문자열 "5" 를 두 번 이어 붙인 것입니다.

댓글 0

로그인하면 댓글을 쓸 수 있습니다.