
파이썬 자료형이란 무엇이며, 어떤 종류가 있나요?
자료형은 값의 타입을 구분하는 것으로, 값이 숫자인지 문자인지 등을 구분하게 해주며 , 숫자, 문자, 불리언, 리스트, 튜플, 딕셔너리, 집합 등이 있습니다

💡 주요 자료형인 숫자형, 문자열, 리스트의 특징은 무엇인가요?
- 숫자형: 정수형(int)과 실수형(float)이 있으며, 사칙연산, 몫, 나머지, 제곱 등의 연산이 가능합니다.
- 문자열: 큰따옴표, 작은따옴표, 또는 세 개의 따옴표로 만들 수 있으며, 인덱싱, 슬라이싱, 포맷팅, 문자열 함수(count, find, replace 등)를 활용할 수 있습니다.
- 리스트: 여러 값을 하나의 변수에서 관리하는 서랍장과 같은 개념으로, 다양한 자료형을 함께 담을 수 있고, 인덱싱, 슬라이싱, 값 수정 및 삭제, 다양한 함수(append, sort, reverse 등)를 사용할 수 있습니다.
파이썬 프로그래밍의 핵심인 자료형과 변수의 개념을 명확히 이해하고 실습을 통해 익힐 수 있는 강의입니다. 단순히 이론을 나열하는 것을 넘어, 숫자형, 문자열, 리스트 등 각 자료형이 실제 코드에서 어떻게 동작하고 활용되는지 구체적인 예시와 함께 설명합니다. 특히 문자열의 인덱싱, 슬라이싱, 포맷팅, 그리고 리스트의 다양한 조작 함수들을 배우며 파이썬으로 데이터를 다루는 실용적인 기술을 습득할 수 있습니다. 프로그래밍 초보자도 쉽게 따라 하며 파이썬의 기본기를 탄탄히 다질 수 있도록 구성되어 있어, 앞으로 더 복잡한 코드를 이해하고 작성하는 데 필수적인 기반을 마련해 줄 것입니다.
1. 파이썬 프로그래밍 기초: 자료형의 중요성 및 개념
- 자료형의 중요성:
- 파이썬 프로그래밍에서 자료형은 언어의 절반을 터득했다고 할 만큼 중요한 개념이다.
- 자료형은 값의 타입을 구분하여, 예를 들어 '1'이 숫자 1인지 문자 '1'인지 구분하게 해준다.
- 프로그래밍에서는 사람이 암묵적으로 숫자로 인식하는 것과 달리, 프로그램은 정해진 형식(자료형)에 따라 값을 처리한다.
- 자료형의 종류:
- 기본 자료형: 숫자, 문자, 참/거짓을 나타내는 불리언(Boolean)이 있다.
- 자료 구조: 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 집합(Set) 등이 있으며, 이는 값을 담는 자료 구조의 역할을 한다.
- 변수의 개념:
- 변수는 어떤 값을 담는 상자이다.
- 예를 들어, 'a = 3'은 숫자 자료 3을 'a'라는 상자에 담는다는 의미이다.
- 수학에서의 등호(=)와 달리, 프로그래밍에서는 오른쪽에 있는 값을 왼쪽 변수에 넣는다는 의미로 사용된다.
- 'a = a + 1'은 기존 'a' 값(3)에 1을 더한 4를 다시 'a'에 넣는다는 의미이다.
2. 숫자형 자료형
2.1. 숫자형의 종류 및 확인 방법
- 숫자형의 종류:
- 정수형(int): 소수점이 없는 숫자이다.
- 예시: 'a = 1'
- print(a) 실행 시 1이 출력된다.
- 실수형(float): 소수점이 있는 숫자이다.
- 예시: 'a = 1.2'
- print(type(a)) 실행 시 'float'이 출력된다.
- 기타 숫자형: 지수 표현 방식, 8진수, 16진수 등이 있으나, 실제 프로그래밍에서는 거의 사용되지 않는다.
- 지수 표현 예시: '4.24e10'은 4.24 * 10^10을 의미하며, 'e'는 10의 거듭제곱을 나타낸다.
- '-e'는 10의 음수 거듭제곱(소수점)을 나타낸다.
- 자료형 확인:
- 변수의 자료형이 궁금할 때는 type() 함수를 사용하여 확인할 수 있다.
- 예시: print(type(a))를 실행하면 'class int' (정수형) 또는 'class float' (실수형) 등으로 출력된다.
2.2. 숫자형 사칙연산 및 기타 연산
- 사칙연산:
- 덧셈: + 기호를 사용한다.
- 예시: a = 3, b = 4 일 때 print(a + b)는 7을 출력한다.
- 곱셈: * 기호를 사용한다. (수학의 'x'와 혼동 방지)
- 예시: print(a * b)는 12를 출력한다.
- 나눗셈: / 기호를 사용한다.
- 예시: print(a / b)는 0.75와 같은 실수형 결과를 출력한다.
- 다른 언어와 달리 파이썬의 /는 몫이 아닌 실수형 나눗셈 결과를 반환한다.
- 몫: // 기호를 두 개 붙여 사용한다.
- 예시: print(3 // 4)는 0을 출력한다.
- 나머지: % 기호를 사용한다.
- 예시: print(3 % 4)는 3을 출력한다.
- 제곱 연산:
- <em></em> 기호를 두 개 붙여 사용한다.
- 예시: print(3 <em></em> 4)는 3의 4승인 81을 출력한다.
3. 문자열 자료형
3.1. 문자열 생성 방법 및 특징
- 문자열 생성 방법:
- 큰따옴표(") 사용: "Hello World"
- 작은따옴표(') 사용: 'Hello World'
- 큰따옴표 3개(""") 사용: """Hello World"""
- 작은따옴표 3개(''') 사용: '''Hello World'''
- 문자열의 타입은 str (String의 약자)이다.
- 따옴표 포함 문자열 처리:
- 문자열 안에 작은따옴표가 포함될 경우, 바깥을 큰따옴표로 감싸면 오류 없이 처리할 수 있다.
- 예시: 'Python's favorite food is perl' (오류 발생)
- 예시: "Python's favorite food is perl" (정상 작동)
- 마찬가지로 문자열 안에 큰따옴표가 포함될 경우, 바깥을 작은따옴표로 감싸면 된다.
- 백슬래시(\) 사용: 문자열 내부에 따옴표를 넣고 싶을 때, 따옴표 앞에 백슬래시를 붙여 이스케이프 문자(Escape Character)로 처리할 수 있다.
- 예시: 'Python\'s favorite food is perl'
- 여러 줄 문자열 처리:
- 이스케이프 문자 \n 사용: 줄 바꿈을 나타내는 이스케이프 문자 \n을 사용하여 여러 줄의 문자열을 표현할 수 있다.
- 예시: 'Like\nPython'
- 따옴표 3개 사용: 큰따옴표 3개 또는 작은따옴표 3개로 문자열을 감싸면, 문자열 내에서 엔터(줄 바꿈)나 탭(간격)을 그대로 인식하여 여러 줄의 문자열을 쉽게 표현할 수 있다.
- 이 방법은 이스케이프 문자를 사용하지 않아도 된다는 장점이 있다.
- 기타 이스케이프 문자: \t (탭), \\ (백슬래시 자체), \' (작은따옴표), \" (큰따옴표) 등이 있다.
3.2. 문자열 연산
- 문자열 연결(덧셈):
- + 기호를 사용하여 두 개 이상의 문자열을 연결할 수 있다.
- 예시: 'Python' + ' is fun'은 'Python is fun'을 출력한다.
- 문자열 반복(곱셈):
- * 기호와 숫자를 사용하여 문자열을 여러 번 반복 출력할 수 있다.
- 예시: 'Python' * 100은 'Python'을 100번 반복하여 출력한다.
3.3. 문자열 인덱싱과 슬라이싱
- 인덱싱(Indexing):
- 문자열 내의 특정 문자 하나를 가리키는 방법이다.
- 대괄호([]) 안에 숫자를 넣어 사용하며, 숫자는 인덱스(Index)라고 불리는 문자의 위치 번호이다.
- 양수 인덱스: 0부터 시작하여 왼쪽에서 오른쪽으로 순서대로 번호가 매겨진다.
- 예시: 'Python'에서 P는 0번, y는 1번, t는 2번 등이다.
- 'Python'[0]은 P를 출력한다.
- 음수 인덱스: -1부터 시작하여 오른쪽에서 왼쪽으로 순서대로 번호가 매겨진다.
- 예시: 'Python'에서 n은 -1번, o는 -2번 등이다.
- 'Python'[-1]은 n을 출력한다.
- 슬라이싱(Slicing):
- 문자열의 특정 부분을 잘라내는 방법이다.
- [시작인덱스:끝인덱스] 형태로 사용하며, 시작 인덱스부터 끝 인덱스 미만까지의 문자열을 잘라낸다.
- 예시: 'Python'[0:7]은 'Python'을 출력한다. (7번 인덱스 미만까지)
- 간격 지정: [시작인덱스:끝인덱스:간격] 형태로 사용하여 특정 간격으로 문자를 건너뛰며 잘라낼 수 있다.
- 예시: 'Python'[::2]는 'Pto'를 출력한다. (처음부터 끝까지 2칸 간격)
- 시작/끝 인덱스 생략:
- [ :끝인덱스]는 처음부터 끝 인덱스 미만까지 잘라낸다.
- [시작인덱스: ]는 시작 인덱스부터 끝까지 잘라낸다.
- [ : ]는 처음부터 끝까지 전체 문자열을 의미한다.
- 음수 슬라이싱: 음수 인덱스를 사용하여 뒤에서부터 슬라이싱할 수 있다.
- 예시: 'Python'[-2:]는 'on'을 출력한다.
3.4. 문자열 포맷팅
- 문자열 포맷팅의 필요성:
- 문자열 안에 변수나 값을 삽입하여 출력할 때, 여러 번 따옴표를 사용하거나 문자열을 연결하는 번거로움을 줄여준다.
- 복잡한 문장을 간편하게 구성할 수 있다.
- % 연산자를 이용한 포맷팅 (구 버전):
- 단일 값 삽입: 문자열 내부에 %s (문자열), %d (정수), %f (실수) 등의 포맷 코드를 사용하고, 문자열 뒤에 %와 삽입할 값을 붙인다.
- 예시: 'I ate %d apples.' % 3은 'I ate 3 apples.'를 출력한다.
- 여러 값 삽입: 여러 개의 값을 삽입할 때는 포맷 코드 뒤에 괄호 ()로 묶은 튜플 형태로 값을 전달한다.
- 예시: 'I ate %d apples. so I was sick for %d days.' % (10, 3)은 'I ate 10 apples. so I was sick for 3 days.'를 출력한다.
- %s의 활용: %s는 모든 자료형(숫자, 문자열 등)을 문자열로 변환하여 삽입할 수 있어 가장 간편하게 사용된다.
- 변수 이름으로 삽입: % 뒤에 딕셔너리 형태로 변수 이름을 지정하여 값을 삽입할 수 있다.
- 예시: 'My name is %(name)s. Age is %(age)d.' % {'name': '이시영', 'age': 3}
- f-string 포맷팅 (Python 3.6 이상):
- 문자열 앞에 f를 붙이고, 문자열 내부에 {변수명} 형태로 변수를 직접 삽입한다.
- 예시: name = '인트', f'아, 이름은 {name}입니다.'는 '아, 이름은 인트입니다.'를 출력한다.
- f-string은 기존 포맷팅 방식보다 간결하고 직관적이다.
3.5. 문자열 정렬 및 공백 처리
- 정렬 및 공백:
- %10s와 같이 숫자를 사용하여 문자열의 전체 길이를 지정하고 공백을 추가할 수 있다.
- 예시: '%10s' % 'hi'는 10칸을 확보하고 오른쪽에 'hi'를 정렬한다.
- - 기호를 사용하여 왼쪽 정렬을 할 수 있다.
- 예시: %-10s' % 'hi'는 10칸을 확보하고 왼쪽에 'hi'를 정렬한다.
- 소수점 표현:
- %0.4f와 같이 사용하여 실수의 소수점 자릿수를 제한할 수 있다.
- 예시: '%.4f' % 3.42134234는 3.4213을 출력한다. (소수점 넷째 자리까지)
- 이 기능은 실제 개발에서 자주 사용되므로 기억해두는 것이 좋다.
3.6. 문자열 관련 함수
- count():
- 문자열 내에서 특정 문자가 몇 개 포함되어 있는지 개수를 세어 반환한다.
- 예시: 'hobby'.count('b')는 2를 반환한다.
- find():
- 문자열 내에서 특정 문자가 처음으로 나타나는 인덱스(위치)를 반환한다.
- 예시: 'hobby'.find('b')는 2를 반환한다. (0부터 시작하여 첫 'b'의 위치)
- 찾는 문자가 문자열에 없으면 -1을 반환한다.
- find() 함수는 조건문(if)과 결합하여 특정 문자의 존재 여부에 따라 다른 처리를 할 때 유용하게 사용된다.
- index():
- find()와 유사하게 특정 문자의 인덱스를 반환하지만, 찾는 문자가 없으면 오류(Error)를 발생시킨다.
- find()가 더 편리하게 사용될 수 있다.
- split():
- 문자열을 특정 구분자(delimiter)를 기준으로 나누어 리스트(List) 형태로 반환한다.
- 구분자를 지정하지 않으면 공백(띄어쓰기, 탭, 줄 바꿈 등)을 기준으로 나눈다.
- 예시: 'a b c d'.split()은 ['a', 'b', 'c', 'd']를 반환한다.
- 특정 문자를 기준으로 나눌 수도 있다.
- split()은 문자열보다는 리스트를 배울 때 더 많이 활용된다.
- upper() / lower():
- upper(): 문자열의 모든 문자를 대문자로 변환한다.
- lower(): 문자열의 모든 문자를 소문자로 변환한다.
- strip():
- 문자열 양쪽 끝의 공백(띄어쓰기, 탭, 줄 바꿈 등)을 제거한다.
- replace():
- 문자열 내의 특정 문자열을 다른 문자열로 교체한다.
- 예시: 'Life is too short'.replace('Life', 'Your')는 'Your is too short'를 출력한다.
4. 리스트 자료형
4.1. 리스트의 개념 및 생성
- 리스트의 필요성:
- 여러 개의 값을 하나의 변수로 효율적으로 관리하기 위해 사용된다.
- 예시: 출석부처럼 여러 학생의 이름을 관리할 때, 각 이름을 개별 변수로 관리하는 것보다 리스트로 묶어 관리하는 것이 편리하다.
- 리스트는 서랍장처럼 여러 값을 순서대로 담을 수 있는 자료 구조이다.
- 리스트 생성:
- 대괄호([]) 안에 쉼표(,)로 구분하여 요소들을 넣어 생성한다.
- 예시: a = [1, 2, 3]
- 다양한 요소 포함: 리스트는 빈 리스트, 숫자, 문자열 등 다양한 자료형의 요소를 포함할 수 있으며, 리스트 안에 또 다른 리스트를 포함하는 것도 가능하다.
- 예시: [1, 'a', [4, 5]]
- 리스트 안에 리스트를 넣는 것은 무한히 가능하다.
4.2. 리스트 인덱싱과 슬라이싱
- 인덱싱:
- 문자열 인덱싱과 동일하게 대괄호([]) 안에 인덱스 번호를 넣어 특정 요소에 접근한다.
- 예시: a = [1, 2, 3]일 때 a[0]은 1을 출력한다.
- 리스트 내의 리스트 요소에 접근할 때는 인덱스를 연달아 사용한다.
- 예시: a = [1, 2, [3, 4]]일 때 a[2][0]은 3을 출력한다.
- 음수 인덱스도 문자열과 동일하게 뒤에서부터 접근한다.
- 슬라이싱:
- 문자열 슬라이싱과 동일하게 [시작인덱스:끝인덱스] 형태로 사용한다.
- 예시: a = [1, 2, 3, 4, 5]일 때 a[0:3]은 [1, 2, 3]을 출력한다.
- 리스트 연산:
- 리스트 연결(덧셈): + 기호를 사용하여 두 리스트를 연결하여 새로운 리스트를 생성한다.
- 예시: [1, 2, 3] + [4, 5, 6]은 [1, 2, 3, 4, 5, 6]을 출력한다.
- 리스트 반복(곱셈): * 기호와 숫자를 사용하여 리스트를 여러 번 반복하여 새로운 리스트를 생성한다.
- 예시: [1, 2, 3] * 2는 [1, 2, 3, 1, 2, 3]을 출력한다.
4.3. 리스트 값 수정 및 삭제
- 값 수정:
- 특정 인덱스의 값을 변경할 수 있다.
- 예시: a = ['박주하', '문제송림']일 때 a[0] = '한재성'은 ['한재성', '문제송림']으로 변경한다.
- 슬라이싱을 이용하여 여러 개의 값을 한 번에 변경할 수 있다.
- 예시: a[0:2] = ['김정현', '스톱모션맨']은 a의 0번부터 2번 미만까지의 요소를 교체한다.
- 값 삭제:
- 슬라이싱을 이용하여 빈 리스트로 교체함으로써 요소를 삭제할 수 있다.
- 예시: a[0:2] = []는 0번부터 2번 미만까지의 요소를 삭제한다.
- del 키워드를 사용하여 특정 인덱스의 요소를 삭제할 수 있다.
- 예시: del a[0]은 a의 0번 인덱스 요소를 삭제한다.
4.4. 리스트 관련 함수
- append():
- 리스트의 맨 마지막에 새로운 요소를 추가한다.
- 예시: a = [1, 2, 3]일 때 a.append(4)는 [1, 2, 3, 4]로 만든다.
- sort():
- 리스트의 요소를 정렬한다.
- 문자열의 경우 가나다순 또는 알파벳순으로, 숫자의 경우 크기 순으로 정렬한다.
- 예시: a = [3, 1, 2]일 때 a.sort()는 [1, 2, 3]으로 만든다.
- reverse():
- 리스트의 요소 순서를 뒤집는다.
- 예시: a = [1, 2, 3]일 때 a.reverse()는 [3, 2, 1]로 만든다.
- index():
- 리스트 내에서 특정 값의 인덱스(위치)를 반환한다.
- 예시: a = [1, 2, 3]일 때 a.index(2)는 1을 반환한다.
- insert():
- 특정 인덱스에 새로운 요소를 삽입한다. (append()는 맨 뒤에 추가)
- 예시: a = [1, 2, 3]일 때 a.insert(0, '사랑')은 ['사랑', 1, 2, 3]으로 만든다.
- remove():
- 리스트 내에서 가장 먼저 나오는 특정 값을 제거한다.
- 예시: a = [1, 2, 1]일 때 a.remove(1)은 [2, 1]로 만든다.
- pop():
- 리스트의 맨 마지막 요소를 끄집어내고, 해당 요소를 리스트에서 제거한다.
- 예시: a = [1, 2, 3]일 때 a.pop()은 3을 반환하고, a는 [1, 2]가 된다.
- count():
- 리스트 내에서 특정 요소가 몇 개 포함되어 있는지 개수를 세어 반환한다.
- 예시: a = [1, 2, 1]일 때 a.count(1)은 2를 반환한다.
- extend():
- 다른 리스트를 현재 리스트의 맨 뒤에 추가하여 확장한다.
- + 연산자와 유사하지만, extend()는 기존 리스트를 직접 변경한다.
- 예시: a = [1, 2]일 때 a.extend([3, 4])는 a를 [1, 2, 3, 4]로 만든다.
5. 마무리 및 과제
- 자료형 복습:
- 자료형은 값의 타입을 구분하며, 1 + 1이 문자열일 경우 '11'이 될 수 있음을 다시 강조한다.
- 변수는 값을 담는 상자이며, 수학의 등호와는 다른 의미로 사용된다.
- 숫자형은 정수, 실수 등이 있으며 사칙연산, 몫, 나머지, 제곱 연산이 가능하다.
- 문자열은 다양한 따옴표로 만들 수 있고, 이스케이프 문자를 통해 여러 줄 표현이 가능하다.
- 문자열은 연결(+) 및 반복(*)이 가능하며, 인덱싱과 슬라이싱을 통해 특정 부분을 다룰 수 있다.
- 문자열 포맷팅, 정렬, 공백, 소수점 표현 방법도 학습했다.
- count(), find(), index(), split(), upper(), lower(), strip(), replace() 등 다양한 문자열 함수를 배웠다.
- 리스트는 여러 값을 한 번에 관리하는 자료 구조이며, 다양한 자료형을 포함할 수 있다.
- 리스트도 인덱싱, 슬라이싱, 곱하기, 값 수정 및 삭제가 가능하다.
- append(), sort(), reverse(), index(), insert(), remove(), pop(), count(), extend() 등 리스트 관련 함수들을 학습했다.
- 학습 목표:
- 오늘 배운 내용은 모두 외울 필요는 없으며, '이런 기능이 있었구나' 하고 기억해두면 나중에 필요할 때 구글링을 통해 찾아 쓸 수 있다.
'인터넷' 카테고리의 다른 글
| AI 개인 비서를 활용하여 이메일 자동화를 설정하는 방법은? (2) | 2025.08.29 |
|---|---|
| AI "딸깍" 으로 만드는 슈퍼자동화 시나리오! 클로드4+MCP (2) | 2025.08.29 |
| AI를 활용하여 햄스터 영상을 만드는 핵심 방법은 무엇인가요? (3) | 2025.08.29 |
| 파이썬은 어떤 언어이며, 어떤 특징을 가지고 있나요? 1강 (4) | 2025.08.29 |
| AI 시대에 미래를 결정하는 '과학 문해력'을 키우는 방법은 무엇인가요? (3) | 2025.08.29 |