Developer's Development

3.1.1 [Python] 변수와 자료형 본문

프로그래밍과 데이터 기초/PYTHON

3.1.1 [Python] 변수와 자료형

mylee 2025. 6. 27. 20:55
변수

 

프로그램에서 다루는 어떤 자료(정보)를 담는 공간

  • 변수 생성

대입 연산자 = 을 기준으로 좌항에는 변수의 이름, 우항에는 변수에 담을 자료를 작성한다.

변수의 생성과 변수의 값 변경 모두 같은 방법으로 작성한다.

파이썬은 변수 공간의 자료형 선언이 없다.

변수명 = 자료
  • 변수 이름 명명규칙

변수명은 변수에 담긴 값이 무엇인지 직관적으로 알 수 있게끔 짓는다.

변수명은 스네이크 케이스(소문자+언더바)로 작성하며, 대소문자를 구별한다.

한글 변수명을 지정할 수 있다. (하지만 인코딩 등의 문제를 야기할 수 있으므로 사용을 지양한다.)

  • 문법 오류를 야기하는 규칙

영문과 숫자를 혼합해 작성할 수 있지만, 숫자를 가장 앞에 작성할 수 없다.

언더바(_)를 제외한 특수 문자는 사용 불가하다.

파이썬 예약어(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', ...}