[SK쉴더스 루키즈 24기] Python(1) 변수와 자료형

아굥·2024년 12월 16일

SK Shieldus Rookies

목록 보기
1/32

파이썬 Overview

1. 파이썬(Python)이란?

  • 문법이 쉽고 간단하여 상대적으로 빠르게 배울 수 있음 -> 상대적으로 사람의 사고 체계와 닮음
  • 사람이 생각하는 방식대로 표현 가능한 언어
  • 오픈소스, 무료임 -> 언제든 다운로드하여 사용 가능
  • 간결함 -> 정상적으로 실행되도록 하려면 반드시 줄(들여쓰기)를 맞추어야 함

2. 파이썬으로 할 수 있는 일

  • 웹 프로그래밍
  • 인공지능/머신러닝
    자연어 처리, 음성 인식, 이미지 인식과 같은 인공지능 기술 구현
    다양한 라이브러리 제공
  • 수치 연산 프로그래밍
    넘파이(Numpy) 수치 연산 모듈을 통해 빠른 수치 연산 가능
  • 데이터 분석
    다양한 라이브러리로 데이터 처리, 통계 분석, 시각화를 손쉽게 수행
    Pandas 등장 이후 데이터 분석 사용 사례 증가
  • 데이터베이스 프로그래밍
    데이터베이스에 접근하기 위한 도구 제공
  • 시스템 유틸리티 제작
    운영체제의 시스템 명령어를 사용하는 도구를 통해 시스템 유틸리티 제작
  • GUI 프로그래밍
  • C/C++ 결합
    C/C++ <-> Python 프로그램 호환 가능
  • 사물 인터넷(IoT)

3. 파이썬으로 할 수 없는 일

  • 시스템과 밀접한 프로그래밍
    운영체제, 매우 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 부적합
  • 모바일 프로그래밍
    안드로이드 네이티브 앱 개발에 부적합
    아이폰 앱 개발 불가

변수

객체(저장된 데이터) = 자료형

  • 파이썬에서 사용하는 변수는 객체를 가리킴
  • 우리가 사용하는 변수는 모두 메모리의 주소 값을 갖고 있음
    ㄴ> 변수에 새로운 값을 할당할 때 자료형에 구애받지 않음

1. 변수 선언

변수명 = 변수에 저장할 값(데이터)

2. 변수 명명 규칙

  • 문자(A-z), 숫자(0-9), _(underscore)를 사용가능
  • 대소문자 구분 가능
  • 의미있는 단어를 사용하는 것이 좋음
  • 숫자로 시작할 수 없음
  • 공백이 포함될 수 없음
  • 예약어를 변수명으로 사용할 수 없음


자료형

프로그램에서 나타낼 수 있는 데이터의 종류

  • 할당 받는 메모리 공간의 크기는 변수의 자료형에 의해 결정됨
    ㄴ> 변수에 저장될 자료의 형에 따라 구분

1. 동적 타이핑

프로그램이 실행 시점에 동적으로 판단하여 자료형을 결정하는 것
변수의 메모리 공간을 생성하는 시점 -> 프로그램이 실행되는 시점

1) 파이썬의 경우

num = 8 처럼 프로그램 실행 시점(8의 값이 저장될 때)에 인터프리터가 정수(int)임을 판단하여 메모리의 타입을 결정

2) 컴파일 언어의 경우

int num = 10 과 같이 프로그램 실행 이전에 변수의 타입을 정의함

2. 자료형의 종류

  • 숫자형: 정수(int), 실수(float)
  • 문자형: 문자열(str)
  • 논리형: 불린(boolean)
  • 컬렉션형: 리스트(list), 튜플(tuple), 집합(set), 딕셔너리(dictionary)
  • None

3. 숫자형

1) 정수형(integer)

  • 8진수(octal): 숫자 0 + 소문자 o나 대문자 O
  • 16진수(hexadecimal): 숫자 0 + 소문자 x
a = 0c177						# 127
b = 0xABC						# 2748
c = 123

2) 실수형(floating-point)

  • 소수점이 포함된 숫자
a = 1.2
b = 4.23E10						# 4.24x10^10

3) 숫자형 활용 가능한 연산자

  • 사칙연산(+, -, *, /)
  • x^y를 나타내는 ** 연산자
  • 나눗셈 후 나머지 반환하는 % 연산자
  • 나눗셈 후 몫 반환하는 // 연산자

4. 문자열 자료형

1) 문자열(string)

  • 문자, 단어 등으로 구성된 문자들의 집합
    ㄴ> 시퀀스 라고도 함
  • '', ""로 감싸서 표현함
"hello world!"
"A"
"100"

2) 문자열 안에 작은 따옴표나 큰 따옴표 포함

  • 작은 따옴표를 큰 따옴표로 둘러싸기 food = "Python's favorite food is perl"
  • 큰 따옴표를 작은 따옴표로 둘러싸기 -> say = '"Python is very easy." he says.'
  • 역슬래시() 사용하기 -> food = 'Python\'s favorite food is perl'
    ㄴ> 역슬래시 뒤의 따옴표는 문자열을 둘러싸는 기호 X, 문자(', ") 그 자체를 의미함

3) 개행이 있는 문자열

  • 이스케이프 코드 '\n'
  • 큰 따옴표 3개 (""")
  • 작은 따옴표 3개(''')

4) 문자열 연산

  • 문자열 더해서 연결
head = "Python"
tail = " is fun!"
head + tail						# Python is fun!
  • 문자열 곱하기
a = "Python"
a * 2							# PythonPython
  • 문자열 길이 구하기
    파이썬 기본 내장 함수 len() 사용
a = "Python"
len(a)							# 6

5) 문자열 인덱싱과 슬라이싱

  • 문자열 인덱싱
    문자열의 특정 값을 뽑아내려면 -> a[index]
    ㄴ> - 인 경우는 뒤에서부터 앞으로
a = "Python"
a[0:4]							# Pyth				
  • 문자열 슬라이싱
    각 요소 문자를 특정 위치부터 잘라냄 -> a[시작 index : 끝 index]
    끝 번호는 탈출 위치이므로 포함 X
a = "Python"
a[:4]							# Pyth	(0~index까지)
a[4:]							# on	(index~n-1까지)

6) 문자열 포매팅

  • 특정 문자열 형식으로 문자열 형식 정의 -> 문자열 특정 위치에 값 삽입
1_숫자 바로 대입 %d(정수)
>>> "I eat %d apples." % 3			
'I eat 3 apples.'

2_문자열 포맷 코드 %s
>>>"I eat %s apples." % 'five'		
'I eat five apples.'

3_숫자 값을 나타내는 변수 대입
>>> number = 3
>>> "I eat %d apples." % number	
'I eat 3 apples.'

4_2개 이상의 값 넣기
>>> number = 3
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
' I ate 3 apples. so I was sick for three days.'
  • 문자열 포맷 코드 종류
코드설명특징
%s문자열(string)(숫자와 함께 사용 시) 공백/정렬 표현 가능
%c문자(character)소수점 뒤에 나올 숫자의 개수 조절/정렬 가능
%d정수(integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal % (문자 % 자체)

  • format 함수를 사용한 포매팅
1_숫자 바로 대입 
>>> "I eat {0} apples.".format(3)
'I eat 3 apples.'

2_숫자 값을 나타내는 변수 대입
>>> number = 3
>>> "I eat {0} apples.".format(number)
'I eat 3 apples.'

3_문자열 바로 대입 
>>> "I eat {0} apples.".format("five")
'I eat five apples.'

4_2개 이상의 값 넣기
>>> number = 3
>>> day = "three"
>>> "I ate {0} apples. so I was sick for {1} days." % (number, day)
'I ate 3 apples. so I was sick for three days.'

5_이름으로 넣기
>>> "I ate {number} apples. so I was sick for {day} days." % (number=3, day=3)
'I ate 3 apples. so I was sick for 3 days.'
  • f 문자열 포매팅
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

7) 문자열 관련 함수

이름설명
count()문자 개수 세기
join()문자열 삽입
find()위치 알려주기 (찾는 문자열이 처음 나온 위치 반환, 없으면 -1 반환)
index()위치 알려주기 (찾는 문자열이 처음 나온 위치 반환, 없으면 오류)
upper()소문자 -> 대문자 변경
lower()대문자 -> 소문자 변경
strip()양쪽 공백 지우기
lstrip()왼쪽 공백 지우기
rstrip()오른쪽 공백 지우기
replace()문자열 바꾸기 (바뀔 문자열, 바꿀 문자열)
split()문자열 나누기 (분리된 문자열을 리스트로 반환)

5. 불 자료형

1) 불 자료형이란?

  • 참(True)과 거짓(False)을 나타내는 자료형
  • 조건문의 반호나 값으로도 사용

2) 자료형의 참과 거짓

bool() 함수로 자료형의 참/거짓 식별 가능

  • 참(True): 1, "ㄱ", [1, 2, 3], {'a': 1}, (1, 2, 3)
  • 거짓(False): 0, "", [], {}, (), None

3) 연산자

산술 연산자

연산기호설명
+더하기
-빼기
*곱하기
/나누기
%나머지
**제곱
//

관계 연산자

연산기호설명
==두 값이 같다
!=두 값이 다르다
>왼쪽 값이 오른쪽 값보다 크다
<왼쪽 값이 오른쪽 값보다 작다
>=왼쪽 값이 오른쪽 값보다 크거나 같다
<=왼쪽 값이 오른쪽 값보다 작거나 같다

논리 연산자

연산기호설명
and논리 AND 연산, 둘 다 참이어야 참
or논리 OR 연산, 둘 중 하나만 참이면 참
not논리 NOT 연산, 논리 상태를 반전

대입 연산자

연산기호설명
=왼쪽 변수에 오른쪽 값을 할당
+=왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽 변수에 할당
-=왼쪽 변수에 오른쪽 값을 빼고 결과를 왼쪽 변수에 할당
*=왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽 변수에 할당
/=왼쪽 변수에 오른쪽 값을 나누고 결과를 왼쪽 변수에 할당
%=왼쪽 변수에 오른쪽 값을 나눈 나머지를 왼쪽 변수에 할당
**=왼쪽 변수에 오른쪽 값만큼 제곱하고 결과를 왼쪽 변수에 할당
//=왼쪽 변수에 오른쪽 값을 나눈 몫을 왼쪽 변수에 할당

멤버 연산자

연산기호설명
inlist 내 포함되어 있으면 참
not inlist 내 포함되어 있지 않으면 참

식별 연산자

연산기호설명
is개체 메모리 위치나 값이 같다면 참
is not개체 메모리 위치나 값이 다르다면 참


시퀀스 자료형

1. 리스트(list)

  • 자료형의 집합을 표현할 수 있는 자료형
    ㄴ> 대괄호([])로 감싸며 각 요소 값은 쉼표(,)로 구분
  • 리스트의 각 요소는 인덱스 번호를 붙여 사용함
  • 자료형 구분없이 포함 가능
  • 문자열과 같이 인덱싱, 슬라이싱 적용 가능
    ㄴ> 변수명[시작 index : 마지막 index : 증가 값]

1) 리스트 연산

연산기호설명
+2개의 리스트 합침
*리스트 반복
len()리스트 길이 구할 수 있음

2) 리스트 수정/삭제

1_리스트 수정
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]

2_리스트 삭제
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]

del [object]: 리스트 요소 삭제

3) 리스트 관련 함수

이름설명
append()맨 마지막에 요소 추가
sort()요소를 순서대로 정렬
reverse()역순으로 뒤집어 줌
index()요소를 검색하여 위치 값 반환, 존재하지 않으면 오류
insert(a, b)a번째 위치에 b를 삽입
remove(a)첫 번째로 나오는 a를 삭제, 값이 여러 개면 첫 번째만 삭제
pop(a)맨 마지막 요소 or a번째 요소를 돌려주고 해당 요소 삭제
count(a)리스트에 포함된 a의 개수 반환
extend(a)리스트에 리스트를 더함, 리스트 타입만 가능

2. 튜플(tuple)

  • 소괄호(())로 감싸며 각 요소 값은 쉼표(,)로 구분
    ㄴ> 하나의 요소만 가질 때도 뒤에 쉼표를 붙여야 함
    ㄴ> 소괄호는 생략해도 가능
  • 자료형 구분없이 포함 가능
  • 요소 값 수정/삭제 불가능

3. 딕셔너리(dictionary)

  • 중괄호({})로 감싸며 각 요소 값은 쉼표(,)로 구분
  • Key와 Value를 한 쌍으로 가짐 ({Key: Value})
    ㄴ> Key를 통해 바로 Value를 얻을 수 있음
  • 동일한 Key가 중복 X -> Value는 아무 값이나 가능

1) 딕셔너리 추가/삭제

1_딕셔너리 추가
>>> a = {1: 'a'}
>>> a[2] = 'b'						# Key가 2인 Key-Value 쌍 추가
>>> a
{1: 'a', 2: 'b'}

2_딕셔너리 삭제
>>> a = {1: 'a', 2: 'b'}
>>> del a[1]						# Key가 1인 Key-Value 쌍 삭제
>>> a
{2: 'b'}

del [object]: 리스트 요소 삭제

2) 딕셔너리 관련 함수

이름설명
keys()Key만 모아서 dict_keys 객체 반환 (리스트 관련 함수 사용 불가)
values()Value만 모아서 dict_keys 객체 반환
items()Key, Value 쌍을 튜플로 묶어 dict_items 객체 반환
clear()딕셔너리 내 모든 요소 삭제, 빈 딕셔너리({})가 됨
in a해당 Key(a)가 존재하면 True, 없으면 False 반환
get(a)Key(a)에 대응되는 Value 반환, 없다면 None 반환, 미리 지정한 값을 갖고오도록 지정 가능

4. 집합(set)

  • set() 사용하여 생성
  • 중복 허용 X, 순서 X -> 인덱싱 사용 불가능
    ㄴ> 인덱싱 사용을 원할 경우 리스트나 튜플로 변환 필요 (list(), tuple() 함수 사용)
>>> s1 = set([1, 2, 3])
>>> s1
{1, 2, 3}

>>> s2 = set("hello")
>>> s2
{'e', 'h', 'l', 'o'}

1) 교집합/합집합/차집합 구하기

>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])

1_교집합: '&' 기호 or intersection() 함수 사용
>>> s1 & s2							# s1.intersection(s2)도 가능
{4, 5, 6}

2_합집합: '|' 기호 or union() 함수 사용
>>> s1 | s2							# s1.union(s2)도 가능
{1, 2, 3, 4, 5, 6, 7, 8, 9}

3_차집합: '-' 기호 or difference() 함수 사용
>>> s1 - s2							# s1.difference(s2)도 가능
{1, 2, 3}
>>> s2 - s1							# s2.difference(s1)도 가능
{8, 9, 7}

2) 집합 관련 함수

이름설명
add()값 1개 추가하기
update()값 여러 개 추가하기
remove()특정 값 제거하기
profile
열심히 살아보아요

0개의 댓글