Developer's Development
3.1.1 [Python] 변수와 자료형 본문
변수
프로그램에서 다루는 어떤 자료(정보)를 담는 공간
- 변수 생성
대입 연산자 = 을 기준으로 좌항에는 변수의 이름, 우항에는 변수에 담을 자료를 작성한다.
변수의 생성과 변수의 값 변경 모두 같은 방법으로 작성한다.
파이썬은 변수 공간의 자료형 선언이 없다.
변수명 = 자료
- 변수 이름 명명규칙
변수명은 변수에 담긴 값이 무엇인지 직관적으로 알 수 있게끔 짓는다.
변수명은 스네이크 케이스(소문자+언더바)로 작성하며, 대소문자를 구별한다.
한글 변수명을 지정할 수 있다. (하지만 인코딩 등의 문제를 야기할 수 있으므로 사용을 지양한다.)
- 문법 오류를 야기하는 규칙
영문과 숫자를 혼합해 작성할 수 있지만, 숫자를 가장 앞에 작성할 수 없다.
언더바(_)를 제외한 특수 문자는 사용 불가하다.
파이썬 예약어(if, elif, else, for, while, ...)을 사용할 수 없다.
숫자형(Numeric)
1. 숫자 자료형의 종류
- int : 정수 값을 가지는 자료형
- float : 실수(부동소수점) 값을 가지는 자료형
- complex : 복소수 값을 가지는 자료형
2. 숫자 자료형의 연산
- 사칙연산 : +, -, *, /
- 특수연산 : % (나머지), // (몫), ** (제곱)
num1 = 15
num2 = 4
print(num1 % num2, num1 // num2) #3 3
base = 2
exponent = 5
print(base ** exponent) #32
- 숫자 자료형 중에서도 정수형과 실수형을 연산하는 경우 정수형을 실수형으로 자동 변환하여, 결과는 실수형으로 반환된다.
논리형
1. 논리 자료형
참 또는 거짓을 표현하는 자료형으로 True, False를 사용한다.
논리 자료형은 문자열이 아니므로 따옴표로 감싸서는 안되며, 첫 글자를 반드시 대문자로 해야만 한다.
2. 논리 자료형의 연산
- 비교 연산 : ==, !=, >, <, >=, <=
'hello' == 'Hello' #False
100 != 100 #False
10 > 9 #True
10 < 9 #False
10 <= 10 #True
10 >= 9 #True
'a' < 'A' #False (아스키코드 97 < 65)
- 논리 연산 : AND, OR, NOT
name = '다람쥐'
age = 20
gender = 'male'
# 1. 이름이 다람쥐이면 True
print(name == '다람쥐')
# 2. 성인이면 True (19세 이상을 성인이라고 기준함)
print(age >= 19)
# 3. 성인이면서 여성이면 True
print(age >= 19 and gender != 'male')
# 4. 이름이 호랑이이면서 성인이면서 남성이면 True
print(name == '호랑이' and age >= 19 and gender == 'male')
# 5. 이름이 다람쥐이거나 성인이면 True
print(name == '다람쥐' or age >= 19)
# 6. 이름이 다람쥐가 아니면 True (논리연산 not 이용)
print(not name == '다람쥐')
문자형 (String)
1. 문자형 선언
큰 따옴표(" ") 또는 작은 따옴표(' ')를 사용하여 문자형 자료(리터럴)을 선언할 수 있다.
print() 함수의 매개변수로 삼중 따옴표를 사용하면 문자열 여러 줄을 전달하여 출력할 수 있다.
2. 문자형 연산
- 문자열 이어 붙이기: +
- 문자열 반복하기: *
3. 문자형의 메서드
- replace(old, new)
- strip([chars])
- 대소문자 관련 메서드 - upper(), lower(), capitalize(), swapcase(), title()
4. 문자형 포맷팅
- %포맷팅: 변수 포맷을 사용하여 문자열에 변수 값을 삽입(%s, %c, %d, %f)
- format(): 타입 명시 없이 format() 함수 이용 가능
- f-string: 변수를 활용하여 문자열을 구성할 때, 따옴표 앞에 f를 붙이고 따옴표 안에서 중괄호 { } 안에 변수명을 넣어 활용
5. 형 변환
서로 다른 자료형 간 연산 등을 위하여 다른 자료형으로 타입을 변환하는 것
- 암시적 형 변환
- 명시적 형 변환
6. 주석
컴퓨터가 해석하지 않는, 무시하고 지나치는 구문을 의미
- 한 줄 주석 # : # 이후로 오는 문자를 컴퓨터가 해석하지 않는다.
- 여러 줄 주석 '''~''', """~""" : 삼중 따옴표 시작부터 삼중 따옴표가 끝나는 구간까지의 내용을 컴퓨터가 해석하지 않는다.
age = 27
city = "Seoul"
print(f"나는 {age}살이고, {city}에 살고 있습니다.") #나는 27살이고, Seoul에 살고 있습니다.
리스트(List)
일련된 값이 모인 집합을 다루기 위한 자료형으로 python은 배열과 같은 표현식을 갖지만, 일반적으로 프로그래밍 언어와 다르게 길이를 동적으로 조절할 수 있어 list라고 부른다.
리스트명 = ['값1', '값2', ...]
List의 각 요소의 자료형은 무엇이든 될 수 있으며, 서로 다른 자료형이어도 괜찮다.
List에 저장되는 요소들은 0부터 시작하는 인덱스 체계로 구분해서 저장된다.
fruits = ['apple', 'banana', 'cherry']
print(fruits[0], fruits[2]) #apple cherry
- 문자열의 split()
split()을 사용하여 문자열을 구분자 기준으로 분리한 List로 만들 수 있다.
lie = 'Python-is-fun'.split('-')
print(lie) #['Python', 'is', 'fun']
- list() 메서드로도 List를 만들 수 있다.
- 리스트 연산 - 리스트 합치기: +, 리스트 반복:*
- 리스트 메서드: count(), index(), reverse(), append(), extend(), insert(), sort(), remove(), pop()
- del 키워드를 통해 원본 배열의 일부 요소 또는 전체 목록을 제거할 수 있다.
- 디큐(double-ended queue, 양방향 큐)란 파이썬의 collections 모듈에서 제공하는 자료구조로, 양쪽 끝에서 효율적인 삽입과 삭제가 가능하게 설계되었다. append(), pop(), appendleft(), popleft() 메서드를 지원한다.
- 리스트 표현 심화 (내포)
# 숫자 1부터 10까지 중에서 짝수만을 추출해 새로운 리스트에 저장하고 출력
even_number = [x for x in range(1, 11) if x % 2 == 0]
even_number #[2, 4, 6, 8, 10]
튜플
여러 개의 값을 하나의 데이터 구조로 묶어서 관리할 수 있는 불변 시퀀스이다.
리스트와 유사하지만, 한번 생성되면 각 요소 값을 생성하거나 수정, 삭제할 수 없다.
튜플명 = ('값1', '값2', ...)
tuples = (1, 2, 'hello'), ('test', 1,2,3,4)
print(tuples) # ((1, 2, 'hello'), ('test', 1, 2, 3, 4))
print(tuples[0]) # (1, 2, 'hello')
print(tuples[0][0]) # 1
튜플은 불변 객체이므로 요소 값을 한번 할당하면 추가, 수정, 삭제가 불가하다.
시퀀스 자료형
여러 값을 순서대로 저장하는 데이터 구조이며, 대표적인 시퀀스 자료형에는 리스트, 튜플, 문자열이 있다.
시퀀스 자료형은 각 요소에 인덱스(index)를 가지고 있어, 이를 사용해 접근할 수 있다.
- string : 문자열 값을 가지는 자료형
- list : 여러 값을 담을 수 있는 가변형 자료형
- tuple : 여러 값을 담을 수 있는 불변형 자료형
인덱싱 : 시퀀스 자료형의 인덱스로 특정 요소를 추출할 수 있으며, 인덱스를 음수로 지정하면 문자열 끝에서부터 요소를 찾는다.
슬라이싱 : 인덱스를 사용하여 기존 시퀀스 자료에서 원하는 만큼의 문자열을 추출할 수 있다.
numbers = [1, 2, 3, 4, 5]
print(numbers[:3]) #[1, 2, 3]
print(numbers[-2:]) #[4, 5]
print(numbers[::-1]) #[5, 4, 3, 2, 1]
시퀀스 자료형의 연산 및 내장 함수
- in : '값 in 시퀀스 자료형'의 형태로 사용하며, 우항의 시퀀스 자료형에 좌항의 값이 포함되어 있으면 True를 반환한다.
- len() : 인자로 전달한 시퀀스 자료형의 요소의 개수(문자열의 길이, 리스트의 요소 개수)를 반환한다.
셋 (Set)
중복된 요소를 허용하지 않으며, 순서 없이 요소를 저장하는 컬렉션이며, 중괄호 { }를 사용해서 집합을 생성한다.
가변성을 가진 자료형으로 데이터, 즉 요소를 추가하거나 제거할 수 있다.
다양한 데이터 타입을 지원하고, 수학적 집합 연산(합집합 교집합 차집합 등)을 지원한다.
fruits = {'apple', 'banana', 'cherry'}
print(fruits) #{'apple', 'banana', 'cherry'}
셋의 메서드
- add(값) : set의 list에 인자로 전달받은 값을 추가한다.
- update(값) : 요소 값을 추가한다.
- remove(값) : 특정 요소를 제거하며, 값이 존재하지 않으면 에러를 발생시킨다.
- discard(값) : 특정 요소를 제거하며, 값이 존재하지 않아도 에러가 발생하지 않는다.
- pop(값) : 임의의 값을 제거한다.
- clear() : 모든 값을 제거한다.
- union() : 두 set 자료형을 합친다.
- intersection() : 두 set 자료형의 교집합을 반환한다.
- difference() : 두 set 자료형의 차집합을 반환한다.
- symmentric_difference() : 대칭 차집합을 반환한다.
- copy() : 대상 set을 복사하여 반환한다.
딕셔너리 (Dictionaries)
키(Key)와 값(Value)의 쌍으로 구성된 자료형 (json의 형태)
키를 통해 값을 찾을 수 있으므로 매우 빠른 조회 성능을 보여주며, 연관 배열 또는 해시라고도 한다.
딕셔너리명 = {키1: 값1, 키2: 값2, ...}
딕셔너리의 메서드
- get() : 매개변수로 전달받은 키에 해당하는 값을 반환한다.
- keys() : 딕셔너리의 모든 키를 반환한다.
- values() : 딕셔너리의 모든 값을 반환한다.
- items() : 딕셔너리의 모든 항목(키-값 쌍)을 반환한다.
- pop() : 매개변수의 값을 제거하고 반환한다.
- popitem() : 마지막 요소의 key-value 값을 제거하고 튜플 형태로 반환한다.
- update() : 다른 딕셔너리나 키-값 쌍의 iterable을 사용하여 딕셔너리 요소를 추가한다.
- clear() : 모든 항목을 제거한다.
자료형 정리 ( 시퀀스 자료형 : 순서!(index) ▶ 인덱싱, 슬라이싱 )
숫자형 - 정수, 실수, 복소수
문자형 - '어쩌구' "저쩌구"
논리형 - True, False
리스트(배열) - ['0개', '1개', '여러 개',...] 배열명[인덱스]
튜플 - (0, 1, '여러 개',...) 튜플명[인덱스]
딕셔너리 - {"이름":"다람쥐", "키":190, ...} 딕셔너리명[key값]
셋 - {'squirrel', 'teacher', ...}
'프로그래밍과 데이터 기초 > PYTHON' 카테고리의 다른 글
| 3.1.5 [Python] 모듈&패키지, 파일 IO (0) | 2025.07.01 |
|---|---|
| 3.1.4 [Python] 클래스 (1) | 2025.06.30 |
| 3.1.3 [Python] 함수 (2) | 2025.06.27 |
| 3.1.2 [Python] 제어문(조건문, 반복문, 분기문) (1) | 2025.06.27 |
| 3.1.0 [Python] 개요 및 개발환경 구축 (0) | 2025.06.27 |