
4.1. 자료형(Data Type) — 데이터의 종류
4.1.1. 자료형이란?
자료형(Data Type)은 변수에 저장되는 데이터의 종류이다. 마치 상자의 용도가 다르듯이, 숫자 상자, 글자 상자, 참거짓 상자가 각각 다르다.
파이썬의 기본 자료형은 4가지이다.
| 자료형 | 영문 | 예시 | 설명 |
|---|---|---|---|
| 정수 | int(인트) | 10, -3, 0 |
소수점이 없는 숫자 |
| 실수 | float(플로트) | 3.14, -0.5, 1.0 |
소수점이 있는 숫자 |
| 문자열 | str(스트링) | "안녕", 'hello' |
따옴표로 감싼 글자들 |
| 불리언 | bool(불) | True, False |
참 또는 거짓 |
4.1.2. 정수 — int(인트)
정수(int)는 소수점이 없는 숫자이다. 양수, 음수, 0 을 모두 포함한다.
lv = 1
score = -10
life = 0
print("레벨:", lv)
print("점수:", score)
print("목숨:", life)
| 줄 | 설명 |
|---|---|
| 1 | 양수 정수 1 을 lv 에 저장한다. |
| 2 | 음수 정수 -10 을 score 에 저장한다. |
| 3 | 정수 0 을 life 에 저장한다. |
| 5~7 | 각 변수의 이름과 값을 함께 출력한다. |
실행 결과
레벨: 1
점수: -10
목숨: 0
4.1.3. 실수 — float(플로트)
실수(float)는 소수점이 있는 숫자이다. 키, 몸무게, 평균 점수처럼 소수점이 필요한 값에 사용한다.
height = 175.5
weight = 68.3
avg = 87.6
print("키:", height, "cm")
print("몸무게:", weight, "kg")
print("평균:", avg, "점")
| 줄 | 설명 |
|---|---|
| 1~3 | 소수점이 있는 실수를 각 변수에 저장한다. |
| 5~7 | 변수 이름과 단위를 함께 출력한다. |
정수 1 과 실수 1.0 은 값은 같아 보이지만 파이썬에서는 다른 자료형이다. 1 은 int(인트)이고, 1.0 은 float(플로트)이다.
4.1.4. 문자열 — str(스트링)
문자열(str)은 따옴표로 감싼 글자들의 모음이다. 큰따옴표(")와 작은따옴표(') 모두 사용할 수 있다.
name = "홍길동"
job = '전사'
msg = "레벨이 올랐습니다!"
print(name)
print(job)
print(msg)
| 줄 | 설명 |
|---|---|
| 1 | 큰따옴표를 사용하여 "홍길동" 을 저장한다. |
| 2 | 작은따옴표를 사용하여 '전사' 를 저장한다. 두 방식의 결과는 같다. |
| 3 | 느낌표(!)가 포함된 문자열을 저장한다. 특수문자도 따옴표 안에 넣으면 모두 문자열이 된다. |
숫자처럼 보여도 따옴표로 감싸면 문자열이 된다. "123" 은 문자열이기 때문에 "123" + "456" 을 하면 "123456" 이 된다. 이는 숫자 123 + 456 = 579 와는 전혀 다른 결과이다.
4.1.4.1. 여러 행 문자열 사용
hellooo='''아o안녕
뭐
해
'''
print(hellooo)
4.1.4.2. 문자열 내에 따옴표 넣기
word='py"thon"'
print(word)
word1="th'pyon'"
print(word1)
word2="th\"pyon\""
print(word2)
br="th\n\"pyon\""
print(br)
4.1.5. 불리언 — bool(불)
불리언(bool)은 참(True)과 거짓(False) 두 가지 값만 가지는 자료형이다. 어떤 상태가 "맞다 / 아니다"를 표현할 때 사용한다.
True 와 False 는 반드시 첫 글자를 대문자로 써야 한다. true, false 로 쓰면 오류가 발생한다.
is_alive = True
is_game_over = False
has_item = True
print("생존 여부:", is_alive)
print("게임 오버:", is_game_over)
print("아이템 보유:", has_item)
| 줄 | 설명 |
|---|---|
| 1 | 살아있는 상태를 True (참)으로 저장한다. |
| 2 | 게임 오버 상태를 False (거짓)으로 저장한다. |
| 3 | 아이템 보유 여부를 True (참)으로 저장한다. |
| 5~7 | 각 상태를 설명과 함께 출력한다. |
실행 결과
생존 여부: True
게임 오버: False
아이템 보유: True
4.1.5.1. 객체의 비교 [is]
integer = 1
real_number = 1.0
print(integer==real_number) #True
print(integer is real_number) #False
print(integer is not real_number) #True
==, !=는 값만 비교한다(1과 1.0은 값이 같아서 True이다).
is,is not은 완전히 똑같은 객체인지 비교한다(1과 1.0은 다른 종류라 False이다).
단순히 값을 비교할 때는 is를 사용하지 않는다.
4.1.5.2. 단락 평가
논리 연산에서 중요한 개념 중 하나가 단락 평가(short-circuit evaluation)이다. 논리 연산에서 결과가 확정되면 나머지 연산을 계산하지 않는 방식이다.
and: 첫 번째 조건이 False이면 두 번째 조건은 확인하지 않는다(결과가 이미 False로 확정).or: 첫 번째 조건이 True이면 두 번째 조건은 확인하지 않는다(결과가 이미 True로 확정).
# and 단락평가
print(False and True) # False (두 번째는 확인 안 함)
print(True and False) # False (첫 번째가 True라 두 번째까지 확인)
print(False and False) # False (두 번째는 확인 안 함)
# or 단락평가
print(True or True) # True (두 번째는 확인 안 함)
print(False or True) # True (첫 번째가 False라 두 번째까지 확인)
print(True or False) # True (두 번째는 확인 안 함)
4.1.6. type() 함수로 자료형 확인하기
type() 함수는 변수나 값의 자료형이 무엇인지 알려준다. 변수의 자료형이 헷갈릴 때 사용하면 유용하다.
a = 10
b = 3.14
c = "안녕"
d = True
print(type(a))
print(type(b))
print(type(c))
print(type(d))
| 줄 | 설명 |
|---|---|
| 1 | 정수 10 을 a 에 저장한다. |
| 2 | 실수 3.14 를 b 에 저장한다. |
| 3 | 문자열 "안녕" 을 c 에 저장한다. |
| 4 | 불리언 True 를 d 에 저장한다. |
| 6 | type(a) 로 a 의 자료형을 확인하여 출력한다. |
| 7 | type(b) 로 b 의 자료형을 확인하여 출력한다. |
| 8 | type(c) 로 c 의 자료형을 확인하여 출력한다. |
| 9 | type(d) 로 d 의 자료형을 확인하여 출력한다. |
실행 결과
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'int'> 에서 class 는 "종류"라는 의미이고, 'int' 가 자료형 이름이다.
4.2. 자료형 변환 — 종류 바꾸기
4.2.1. 변환 함수 종류
때로는 자료형을 다른 종류로 바꿔야 할 때가 있다. 예를 들어 input() 함수로 입력받은 값은 항상 문자열이기 때문에 숫자로 계산하려면 반드시 변환해야 한다.
| 함수 | 변환 결과 | 예시 |
|---|---|---|
int() |
정수로 변환 | int("10") → 10 |
float() |
실수로 변환 | float("3.14") → 3.14 |
str() |
문자열로 변환 | str(100) → "100" |
4.2.2. 변환 예시
num_str = "100"
num_int = int(num_str)
num_float = float(num_str)
print(num_str, type(num_str))
print(num_int, type(num_int))
print(num_float, type(num_float))
| 줄 | 설명 |
|---|---|
| 1 | 문자열 "100" 을 변수 num_str 에 저장한다. 따옴표로 감쌌으므로 문자열이다. |
| 2 | int() 함수로 문자열 "100" 을 정수 100 으로 변환하여 저장한다. |
| 3 | float() 함수로 문자열 "100" 을 실수 100.0 으로 변환하여 저장한다. |
| 5 | 원본 문자열과 그 자료형을 함께 출력한다. |
| 6 | 변환된 정수와 그 자료형을 함께 출력한다. |
| 7 | 변환된 실수와 그 자료형을 함께 출력한다. |
실행 결과
100 <class 'str'>
100 <class 'int'>
100.0 <class 'float'>
4.2.3. 정수, 실수, 문자열을 불로 바꾸기
bool() 함수로 다른 자료형을 True 또는 False로 바꿀 수 있다.
- 숫자:
0만 False이고, 나머지는 모두 True이다. - 문자열: 빈 문자열
""만 False이고, 내용이 있으면 True이다.
print(bool(1)) #True
print(bool(0)) #False
print(bool(1.5)) #True
print(bool('False')) #True (문자열이 있으므로)
4.3. input() 함수 — 사용자 입력받기
input() 함수는 사용자에게 키보드 입력을 받는다. 괄호 안에 안내 문구를 넣으면 화면에 먼저 출력된 후 입력 대기 상태가 된다.
input() 으로 받은 값은 숫자처럼 보여도 항상 문자열(str)이다. 숫자로 계산하려면 반드시 int() 또는 float() 로 변환해야 한다.
name = input("이름을 입력하세요: ")
age = int(input("나이를 입력하세요: "))
print("이름:", name)
print("나이:", age)
print("내년 나이:", age + 1)
| 줄 | 설명 |
|---|---|
| 1 | input() 으로 이름을 입력받아 name 에 저장한다. 이름은 문자열이므로 변환이 필요 없다. |
| 2 | input() 으로 나이를 입력받은 뒤 int() 로 정수로 변환하여 age 에 저장한다. 변환하지 않으면 age + 1 에서 오류가 발생한다. |
| 4~5 | 입력받은 이름과 나이를 출력한다. |
| 6 | age + 1 로 내년 나이를 계산하여 출력한다. age 가 정수이므로 덧셈이 가능하다. |
4.4. 종합 예제: 내 캐릭터 카드 만들기
지금까지 배운 내용을 종합하여 캐릭터 카드 출력 프로그램을 만든다.
name = "홍길동"
job = "전사"
lv = 1
hp = 100
mp = 50
is_alive = True
print("==============================")
print(" 캐릭터 카드")
print("==============================")
print("이름 :", name)
print("직업 :", job)
print("레벨 :", lv)
print("HP :", hp)
print("MP :", mp)
print("생존 :", is_alive)
print("==============================")
| 줄 | 설명 |
|---|---|
| 1 | 캐릭터 이름을 문자열(str)로 저장한다. |
| 2 | 직업을 문자열(str)로 저장한다. |
| 3 | 레벨을 정수(int)로 저장한다. |
| 4 | 체력을 정수(int)로 저장한다. |
| 5 | 마나를 정수(int)로 저장한다. |
| 6 | 생존 여부를 불리언(bool)로 저장한다. |
| 8~10 | 구분선과 제목을 출력하여 카드의 테두리를 만든다. |
| 11~16 | 각 변수의 이름과 값을 함께 출력한다. |
| 17 | 구분선을 한 번 더 출력하여 카드를 마무리한다. |
실행 결과
==============================
캐릭터 카드
==============================
이름 : 홍길동
직업 : 전사
레벨 : 1
HP : 100
MP : 50
생존 : True
==============================
4.5. 실습 과제
4.5.1. 과제 1. 자기소개 프로그램
input() 으로 이름, 나이, 좋아하는 음식을 입력받아 아래 형식으로 출력하는 코드를 작성한다.
안녕하세요!
이름: 홍길동
나이: 20
좋아하는 음식: 피자
정답 예시 보기
name = input("이름을 입력하세요: ")
age = int(input("나이를 입력하세요: "))
food = input("좋아하는 음식을 입력하세요: ")
print("안녕하세요!")
print("이름:", name)
print("나이:", age)
print("좋아하는 음식:", food)
4.5.2. 과제 2. 게임 캐릭터 등록
아래 정보를 변수에 저장하고 출력하는 코드를 작성한다. 값은 직접 정해서 넣는다.
- 캐릭터 이름 (문자열)
- 직업 (문자열)
- 레벨 (정수, 1~99 사이)
- 체력 (실수, 예: 125.5)
- 최강자 여부 (불리언)
정답 예시 보기
c_name = "다크나이트"
c_job = "기사"
c_lv = 45
c_hp = 2350.5
c_best = False
print("캐릭터 이름:", c_name)
print("직업:", c_job)
print("레벨:", c_lv)
print("체력:", c_hp)
print("최강자 여부:", c_best)