04. 파이썬 기본 자료형

파이썬 기본 자료형 분류 — 변수에 저장되는 데이터의 종류와 자료형 확인 함수이다.

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 양수 정수 1lv 에 저장한다.
2 음수 정수 -10score 에 저장한다.
3 정수 0life 에 저장한다.
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) 두 가지 값만 가지는 자료형이다. 어떤 상태가 "맞다 / 아니다"를 표현할 때 사용한다.

TrueFalse 는 반드시 첫 글자를 대문자로 써야 한다. 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 정수 10a 에 저장한다.
2 실수 3.14b 에 저장한다.
3 문자열 "안녕"c 에 저장한다.
4 불리언 Trued 에 저장한다.
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)

댓글 남기기