IT 오류해결/윈도우·명령어

파이썬 자료형 총정리|숫자·문자열·리스트·튜플·딕셔너리·불 자료형과 형변환

잡가이버 2026. 9. 4. 17:06
반응형

파이썬을 처음 배우면 가장 먼저 변수와 함께 접하는 것이 자료형입니다. 자료형은 어렵게 생각할 필요 없이 변수 안에 들어 있는 데이터가 숫자인지, 글자인지, 여러 값을 묶은 목록인지 컴퓨터에게 알려주는 종류라고 이해하면 됩니다.

예를 들어 쇼핑몰 프로그램을 만든다고 해보겠습니다. 상품 가격은 숫자로 계산해야 하고, 상품명은 문자로 저장해야 하며, 장바구니에는 여러 상품을 담아야 합니다. 결제가 완료됐는지는 참 또는 거짓으로 구분할 수 있습니다.

product_name = "무선 키보드"
price = 79000
discount_rate = 0.15
cart = ["키보드", "마우스", "USB 허브"]
payment_complete = True

각각 같은 변수처럼 보이지만 실제로는 서로 다른 자료형입니다.

파이썬 자료형 핵심만 먼저 정리

int : 정수
float : 소수점이 있는 숫자
str : 문자열
bool : 참·거짓
list : 수정 가능한 여러 값
tuple : 수정하지 않을 여러 값
dict : 이름과 값을 한 쌍으로 저장
set : 중복 없는 값 모음
None : 아직 값이 없음

파이썬 자료형이란?

Python에서는 변수를 만들 때 Java나 C처럼 자료형을 직접 선언하지 않아도 됩니다. 값을 넣으면 Python이 알아서 자료형을 결정합니다.

bike_price = 8500000
bike_name = "로드바이크"
average_speed = 31.7
is_available = True

현재 변수의 자료형이 궁금하다면 type() 함수를 사용합니다.

print(type(bike_price))
print(type(bike_name))
print(type(average_speed))
print(type(is_available))

# 출력
# <class 'int'>
# <class 'str'>
# <class 'float'>
# <class 'bool'>

숫자형 Number - int·float

숫자형은 계산에 사용하는 자료형입니다. 대표적으로 정수 int실수 float가 있습니다.

정수형 int

소수점이 없는 숫자를 의미합니다. 양수·음수·0을 모두 사용할 수 있습니다.

stock = 25
temperature = -7
empty_stock = 0

print(type(stock))
# <class 'int'>

쇼핑몰 재고 계산 예제

stock = 25
order = 4

stock = stock - order

print(stock)

# 출력
# 21

실수형 float

소수점이 포함된 숫자를 저장합니다. 속도·거리·평균값·온도·할인율처럼 소수점이 필요한 데이터에서 자주 사용합니다.

distance = 102.7
average_speed = 31.8
temperature = 24.5

print(type(distance))

# <class 'float'>

정수와 실수 계산

distance = 96.5
hours = 3

average_speed = distance / hours

print(average_speed)

# 32.166666666666664

정수끼리 나눠도 / 연산 결과는 일반적으로 float가 됩니다.

파이썬 사칙연산과 특수 연산자

연산자 기능 예제
+더하기10 + 3 → 13
-빼기10 - 3 → 7
*곱하기10 * 3 → 30
/나누기10 / 3 → 3.333...
//10 // 3 → 3
%나머지10 % 3 → 1
**거듭제곱10 ** 2 → 100

카페 결제금액 계산 예제

coffee = 4800
cake = 6500
coffee_count = 2

total = coffee * coffee_count + cake

print(total)

# 출력
# 16100

짝수·홀수 확인

order_number = 37

if order_number % 2 == 0:
    print("짝수 주문번호입니다.")
else:
    print("홀수 주문번호입니다.")

# 홀수 주문번호입니다.

%는 짝수·홀수 검사뿐 아니라 일정 간격마다 작업을 실행하는 프로그램에서도 자주 사용합니다.

8진수와 16진수

일상적인 Python 프로그램에서는 많이 사용하지 않지만 시스템·네트워크·색상·메모리와 관련된 작업에서는 16진수를 볼 일이 있습니다.

octal_value = 0o755
hex_value = 0xFF

print(octal_value)
print(hex_value)

# 493
# 255

웹 색상값 예시

red = 0xFF
green = 0x80
blue = 0x20

print(red, green, blue)

# 255 128 32

문자열 str

문자열은 글자·단어·문장처럼 문자로 이루어진 데이터를 저장하는 자료형입니다. Python에서는 작은따옴표와 큰따옴표 모두 사용할 수 있습니다.

device = "Galaxy S26"
os_name = 'Android'
message = "업데이트가 완료되었습니다."

print(device)
print(os_name)
print(message)

문자열 안에 따옴표 넣기

message1 = "오늘은 '정상 영업'합니다."
message2 = '제품 이름은 "Ultra Pro"입니다.'

print(message1)
print(message2)

같은 종류의 따옴표를 사용해야 한다면 역슬래시를 사용할 수도 있습니다.

message = "직원이 \"재부팅하세요\"라고 안내했습니다."

print(message)

여러 줄 문자열 만들기

긴 안내문이나 로그 메시지를 저장할 때는 삼중 따옴표를 사용하면 편합니다.

notice = """서버 점검 안내
점검 시간 : 오전 2시
예상 시간 : 약 30분
점검 중 서비스 접속이 제한됩니다."""

print(notice)

또는 \n을 사용해 직접 줄바꿈을 넣을 수 있습니다.

message = "업데이트 시작\n파일 다운로드\n설치 완료"

print(message)

문자열 더하기와 반복하기

문자열 연결

brand = "Samsung"
model = " SSD 990 PRO"

product = brand + model

print(product)

# Samsung SSD 990 PRO

문자열 반복

line = "=" * 30

print(line)

# ==============================

콘솔 프로그램에서 구분선을 만들 때 꽤 유용합니다.

문자열 길이 len()

filename = "windows_update.log"

print(len(filename))

# 18

공백과 특수문자도 문자열 길이에 포함됩니다.

문자열 인덱싱 Indexing

인덱싱은 문자열에서 글자 하나를 꺼내는 방법입니다. Python은 첫 번째 위치를 1이 아니라 0부터 계산합니다.

model = "RTX5090"

print(model[0])
print(model[1])
print(model[-1])

# R
# T
# 0
인덱스 규칙

첫 글자 : 0
두 번째 : 1
마지막 글자 : -1
뒤에서 두 번째 : -2

문자열 슬라이싱 Slicing

슬라이싱은 문자열 중 원하는 부분만 잘라내는 기능입니다.

filename = "backup_20260904.zip"

print(filename[0:6])
print(filename[7:15])
print(filename[-3:])

# backup
# 20260904
# zip

시작 또는 끝 생략

text = "Windows11"

print(text[:7])
print(text[7:])
print(text[:])

# Windows
# 11
# Windows11

실제 파일 확장자 확인 예제

filename = "photo.webp"

extension = filename[-4:]

print(extension)

# webp

문자열은 직접 수정할 수 없다

Python 문자열은 불변 Immutable 자료형입니다. 만든 문자열의 특정 글자를 직접 교체할 수 없습니다.

text = "Python"

# 아래 코드는 오류
# text[0] = "J"

새로운 문자열을 만들어야 합니다.

text = "Python"

new_text = "J" + text[1:]

print(new_text)

# Jython

문자열 포맷팅 - 현재는 f-string 추천

변수 값을 문장 중간에 넣어야 할 때 문자열 포맷팅을 사용합니다.

Python에는 여러 방식이 있지만 새 코드를 작성한다면 f-string을 우선 사용하는 것이 가장 읽기 쉽습니다.

옛날 % 포맷 방식

product = "SSD"
price = 159000

print("%s의 가격은 %d원입니다." % (product, price))

# SSD의 가격은 159000원입니다.

format() 사용

product = "SSD"
price = 159000

print("{}의 가격은 {:,}원입니다.".format(product, price))

# SSD의 가격은 159,000원입니다.

f-string 사용

product = "SSD"
price = 159000

print(f"{product}의 가격은 {price:,}원입니다.")

# SSD의 가격은 159,000원입니다.

f-string 실무 예제

가격에 천 단위 쉼표 넣기

computer_price = 2875000

print(f"컴퓨터 가격 : {computer_price:,}원")

# 컴퓨터 가격 : 2,875,000원

소수점 자리수 제한

speed = 31.84752

print(f"평균속도 : {speed:.1f}km/h")

# 평균속도 : 31.8km/h

할인율 표시

discount = 0.175

print(f"할인율 : {discount:.1%}")

# 할인율 : 17.5%

쇼핑몰 주문서 예제

product = "27인치 모니터"
price = 329000
quantity = 2

total = price * quantity

print(f"""
상품명 : {product}
수량   : {quantity}개
단가   : {price:,}원
총금액 : {total:,}원
""")

불 자료형 bool - True·False

불 자료형은 참 또는 거짓 두 가지 상태만 저장합니다.

wifi_connected = True
update_required = False

print(wifi_connected)
print(update_required)

스마트폰 배터리 예제

battery = 18

need_charge = battery < 20

print(need_charge)

# True

조건문과 함께 사용

battery = 18

if battery < 20:
    print("충전기를 연결하세요.")
else:
    print("배터리가 충분합니다.")

bool() 함수에서 참과 거짓 판단

bool 결과
""False
[]False
{}False
0False
NoneFalse
"Python"True
[1]True
print(bool(""))
print(bool("Windows"))
print(bool(0))
print(bool(100))
print(bool([]))
print(bool(["SSD"]))

# False
# True
# False
# True
# False
# True

리스트 list - 여러 값을 한 번에 저장

리스트는 여러 개의 데이터를 순서대로 저장하는 자료형입니다. 대괄호 []를 사용합니다.

pc_parts = ["CPU", "RAM", "SSD", "GPU"]

print(pc_parts)
print(pc_parts[0])

# ['CPU', 'RAM', 'SSD', 'GPU']
# CPU

리스트 값 추가

pc_parts = ["CPU", "RAM"]

pc_parts.append("SSD")

print(pc_parts)

# ['CPU', 'RAM', 'SSD']

리스트 값 변경

storage = ["SSD 1TB", "HDD 2TB"]

storage[1] = "HDD 4TB"

print(storage)

# ['SSD 1TB', 'HDD 4TB']

문자열과 달리 리스트는 값을 직접 변경할 수 있는 Mutable 자료형입니다.

튜플 tuple

튜플은 리스트와 비슷하지만 한 번 만든 뒤 값을 바꾸지 않는 데이터를 저장할 때 사용합니다.

resolution = (3840, 2160)

width = resolution[0]
height = resolution[1]

print(width, height)

# 3840 2160

화면 해상도·좌표·고정 설정값처럼 이후 수정할 필요가 적은 데이터에 사용하기 좋습니다.

딕셔너리 dict - 이름과 값을 한 쌍으로 저장

딕셔너리는 Key와 Value 형태로 값을 저장합니다.

computer = {
    "cpu": "Ryzen 7",
    "ram": 32,
    "ssd": "2TB",
    "gpu": "RTX 5080"
}

print(computer["cpu"])
print(computer["ram"])

# Ryzen 7
# 32

딕셔너리 값 변경

computer["ram"] = 64

print(computer["ram"])

# 64

사용자 정보 예제

user = {
    "name": "사용자01",
    "level": 12,
    "premium": True
}

print(f"{user['name']}님의 레벨은 {user['level']}입니다.")

# 사용자01님의 레벨은 12입니다.

집합 set - 중복 자동 제거

set은 여러 값을 저장하지만 중복된 값은 하나만 남깁니다.

visitors = {
    "Chrome",
    "Edge",
    "Firefox",
    "Chrome",
    "Edge"
}

print(visitors)

# 중복 Chrome, Edge는 한 번만 저장

중복 데이터 제거

device_ids = [101, 102, 101, 103, 102]

unique_ids = set(device_ids)

print(unique_ids)

# {101, 102, 103}

None - 아직 값이 없을 때

None은 숫자 0이나 빈 문자열과 다른 값 자체가 지정되지 않은 상태를 나타냅니다.

download_url = None

if download_url is None:
    print("다운로드 주소가 아직 등록되지 않았습니다.")
None을 비교할 때는 일반적으로 == None보다 is None을 사용합니다.

자료형 변환 - int·float·str

input()이나 파일에서 읽은 값은 숫자처럼 보여도 문자열인 경우가 많습니다. 이때 자료형 변환이 필요합니다.

문자열 → 정수

price = "159000"

price = int(price)

print(price + 1000)

# 160000

정수 → 문자열

version = 26

text = "Windows " + str(version)

print(text)

# Windows 26

문자열 → 실수

temperature = "26.7"

temperature = float(temperature)

print(temperature + 1)

# 27.7

파이썬 자료형 오류 - TypeError

초보자가 가장 자주 보는 오류 중 하나입니다.

price = 10000
message = "가격 : "

print(message + price)

문자열과 정수를 바로 더할 수 없기 때문에 TypeError가 발생합니다.

해결방법 1 - str()

print(message + str(price))

해결방법 2 - f-string

print(f"가격 : {price:,}원")

저라면 새로운 코드를 작성할 때는 두 번째처럼 f-string을 사용할 것 같습니다. 자료형 변환을 직접 여러 번 넣지 않아도 되고 코드도 읽기 쉽습니다.

ValueError - 숫자로 바꿀 수 없는 문자열

price = "12만원"

price = int(price)

숫자가 아닌 '만원'이라는 문자가 들어 있기 때문에 변환할 수 없습니다.

숫자 부분만 따로 저장하거나 입력값을 정리한 뒤 변환해야 합니다.

type()과 isinstance() 차이

type()

speed = 32.5

print(type(speed))

# <class 'float'>

isinstance()

speed = 32.5

print(isinstance(speed, float))

# True

단순 확인에는 type()이 직관적이고, 프로그램에서 특정 자료형인지 검사할 때는 isinstance()가 더 유용한 경우가 많습니다.

Mutable과 Immutable 차이

자료형 수정 가능 여부
intImmutable
floatImmutable
strImmutable
tupleImmutable
listMutable
dictMutable
setMutable

이 차이는 Python을 조금 더 깊게 배우면서 함수 인자나 객체를 다룰 때 매우 중요해집니다.

하나의 예제로 자료형 모두 사용해보기

이번에는 온라인 쇼핑 주문 하나를 만든다고 가정해보겠습니다.

# 상품명 - 문자열
product = "무선 마우스"

# 가격 - 정수
price = 59000

# 할인율 - 실수
discount = 0.1

# 수량 - 정수
quantity = 2

# 주문 옵션 - 리스트
options = ["블랙", "선물포장"]

# 고객 정보 - 딕셔너리
customer = {
    "name": "고객01",
    "grade": "VIP"
}

# 결제 여부 - 불
payment_complete = True

# 배송번호 - 아직 없음
tracking_number = None

discount_price = price * (1 - discount)
total = discount_price * quantity

print(f"상품 : {product}")
print(f"고객 : {customer['name']}")
print(f"수량 : {quantity}개")
print(f"할인가 : {discount_price:,.0f}원")
print(f"결제금액 : {total:,.0f}원")
print(f"옵션 : {options}")
print(f"결제완료 : {payment_complete}")
print(f"배송번호 : {tracking_number}")

실제 프로그램에서는 하나의 자료형만 사용하는 것이 아니라 이렇게 문자열·정수·실수·리스트·딕셔너리·불·None을 서로 조합하게 됩니다.

파이썬 자료형 FAQ

Python에서 변수 자료형을 직접 선언해야 하나요?

아닙니다. Python은 변수에 넣은 값을 보고 자료형을 자동으로 결정합니다.

int와 float 차이는 무엇인가요?

int는 소수점 없는 정수이고 float는 소수점이 포함된 실수입니다.

문자열과 숫자를 더하면 왜 오류가 나나요?

서로 다른 자료형이기 때문입니다. str()이나 int()로 변환하거나 f-string을 사용해야 합니다.

리스트와 튜플 차이는 무엇인가요?

리스트는 만든 뒤 값을 추가·수정·삭제할 수 있지만 튜플은 기본적으로 수정할 수 없습니다.

딕셔너리는 언제 사용하나요?

사용자의 이름·나이·등급처럼 데이터에 이름을 붙여 저장할 때 유용합니다.

f-string과 format 중 어떤 것을 사용하면 되나요?

새로운 Python 코드를 작성한다면 일반적으로 f-string이 가장 읽기 쉽고 편합니다.

0은 False인가요?

bool(0)은 False입니다. 빈 문자열·빈 리스트·빈 딕셔너리·None도 조건문에서는 False로 평가됩니다.

문자열은 수정할 수 없나요?

문자열은 Immutable 자료형이므로 특정 위치의 문자를 직접 변경할 수 없습니다. 수정된 새로운 문자열을 만들어야 합니다.

type과 isinstance 중 어떤 것이 좋나요?

단순히 자료형을 출력해 확인할 때는 type(), 코드에서 특정 자료형 여부를 검사할 때는 isinstance()가 유용합니다.

파이썬 자료형 정리

처음 배울 때는 이 순서만 익혀도 충분합니다.

① 숫자는 int·float
② 글자는 str
③ 여러 값은 list
④ 이름과 값을 함께 저장하면 dict
⑤ 참·거짓은 bool
⑥ 값이 아직 없다면 None
⑦ 출력문에 변수를 넣을 때는 f-string
⑧ 자료형이 궁금하면 type()
⑨ 형변환은 int()·float()·str()

Python 자료형은 처음에는 외워야 할 내용처럼 보이지만 실제로 코드를 몇 번 작성해보면 자연스럽게 익숙해집니다. 특히 숫자형·문자열·리스트·딕셔너리 네 가지는 거의 모든 Python 프로그램에서 반복해서 사용합니다.

개인적으로는 처음부터 자료형 이름만 외우기보다는 상품 가격 계산 → 문자열 출력 → 여러 상품을 리스트에 저장 → 고객정보를 딕셔너리에 저장 → 결제 여부를 bool로 판단 하는 식으로 하나의 작은 프로그램을 만들어보는 방법이 이해하기 훨씬 쉽습니다.

Python 공식 자료형 참고

반응형