컴퓨터 : 계산을 수행하는 기계 장치
컴퓨터의 구성 : CPU, RAM, SSD(HDD)
OS : 물리적 장치 제어
APP : 물리적 장치 사용 절차
웹 브라우저에서 Python 코드를 작성하고 단계적으로 실행 가능하도록 하는 개발자 도구
cell 단위로 코드를 실행하는 환경 (에디터 : IDE)
통합 개발 환경, 소프트웨어 개발에 관련된 모든 작업, 즉 패키지 인클루딩, 문서 편집, 컴파일, 디버그, 원격 서버 액세스, 바이너리 배포 등을 하나의 프로그램 안에서 모두 처리하는 환경을 제공하는 툴
Mode
Style
Shortcut
shift + enter
: 코드 실행esc + a, b
: cell 윗줄에 생성, 아랫줄에 생성ctrl + space
: 자동 완성Python(언어)를 배우는 것은 컴퓨터의 CPU, RAM, SSD(HDD)를 사용하는 방법인 문법을 학습하는 것
변수 선언
RAM을 사용하는 문법 : 메모리에 저장 공간을 만들어 데이터 저장
데이터 타입
int
float
str
bool
list
tuple
dict
set
연산자
코드를 효율적으로 작성할 수 있도록 도와주는 문법
조건문
if
elif
else
반복문
while
for
break
continue
range()
zip()
enumerate()
함수
def
args
params
docstring
scope
lambda
클래스
class
self
__int__()
__add__()
__str__()
모듈, 패키지
import
from
as
예외처리
try
except
finally
raise
입출력
pickle
RAM을 사용하는 문법 : 메모리에 저장 공간을 만들어 데이터 저장
식별자 규칙
대소문자
숫자
_
사용 가능data_1
(O), 1_data
(X)def
if
for
(X), print
(O)jupyter_notebook
이와 같은 형태를 snake_case
라고 함JUPYTER_NOTEBOOK
식별자 규칙 실습
# 식별자 1개, 데이터 1개
data1 = 1
# 식별자 n개, 데이터 n개
data2, data3 = 2, 3
# 식별자 n개, 데이터 1개
data4 = data5 = 4
매직 커맨드 %
: iPython 인터프리터에 추가된 특수 명령어, alias 등록, 스크립트 실행, 명령어 실행 시간 확인 등의 기능이 있음
jupyter notebook 매직 커맨드 (https://pinkwink.kr/1235?category=522424)
%whos
# 매직(스페셜) 커멘드 : %, %% 문법
# % : 커멘드 한줄 단위, %% : 셀 단위
# %ls, %reset, %%time, %%wirtefile ...
print()
: 식별자에 저장되어 있는 데이터 출력
print(data1, data2, data3, data4, data5)
RAM을 표현하는 그림대로 변수를 선언하고, 데이터를 출력해보자
# son 30 messi 30
# 1
player1 = 'son'
player2 = 'messi'
goal1 = 30
goal2 = 30
print(player1, goal1, player2, goal2)
# 2
player1, player2 = 'son', 'messi'
goal1 = goal2 = 30
print(player1, goal1, player2, goal2)
int
float
str
bool
list
tuple
dict
set
CRUD
: 컴퓨터 소프트웨어의 기본적인 데이터 처리 기능 (create, read, update, delete)data1, data2, data3, data4 = -10, 1.2, True, 'python'
type()
: 식별자의 데이터 타입 출력
data1, data2, data3, data4 = -10, 1.2, True, 'python'
type(data1), type(data2), type(data3), type(data4)
# Terminal
(int, float, bool, str)
동적 타이핑 : 변수 선언 시 데이터 타입 지정 안해도 자동으로 지정됨
int data1 = -10
iterable (순서가 있는) collection
list []
순서가 있고, 수정이 가능
data1 = [1, 2, 3, 'A', 'B']
data1, type(data1)
# Terminal
([1, 2, 3, 'A', 'B'], list)
데이터 선택 : read (masking)
data[]
[index]
[key]
[start:end] (범위, start는 포함 end는 미포함)
[start:end:stride] (점프)
data1 = [1, 2, 3, 'A', 'B']
print(data1)
data1[3], data1[2:4], data1[:2], data1[3:], data1[:], data1[::2]
# Terminal
[1, 2, 3, 'A', 'B']
('A', [3, 'A'], [1, 2], ['A', 'B'], [1, 2, 3, 'A', 'B'], [1, 3, 'B'])
data[]
str(문자열)
에서도 사용 가능
str
: 문자들의 집합 → 문자열
data = 'macbook notebook'
data[8:12]
# Terminal
# 'note'
masking을 이용해 년도 데이터만 출력되도록 start, end 데이터를 설정해보자
# 1
d1 = '사업보고서(2022)'
d2 = '감사보고서(2023)'
start, end = 6, 10
d1[start:end], d2[start:end]
# Terminal
# ('2022', '2023')
# 2
d1 = '사업보고서(2022)'
d2 = '감사보고서(2023)'
d3 = '[기재정정]감사보고서(2021)'
start, end = -5, -1
d1[start:end], d2[start:end],d3[start:end]
# Terminal
# ('2022', '2023', '2021')
masking의 -(음수) 사용
data1 = [1, 2, 3, 'A', 'B']
print(data1)
data1[-2], data1[-2:], data1[::-1]
# Terminal
[1, 2, 3, 'A', 'B']
('A', ['A', 'B'], ['B', 'A', 3, 2, 1])
tuple ()
순서가 있고, 수정이 불가능 (소괄호 생략 가능)
data2 = (1, 2, 3, 'A', 'B')
data2, type(data2)
# Terminal
((1, 2, 3, 'A', 'B'), tuple)
데이터 수정 : update
데이터 선택 = 수정할 데이터
(= 은 대입해준다는 의미)
data1 = [1, 2, 3, 'A', 'B']
print(data1)
data1[3] = 'C'
print(data1)
# Terminal
[1, 2, 3, 'A', 'B']
[1, 2, 3, 'C', 'B']
tuple
은 데이터 수정 불가
data2 = (1, 2, 3, 'A', 'B')
print(data2)
data2[3] = 'C'
print(data2)
# Terminal
TypeError: 'tuple' object does not support item assignment
tuple
을 사용하는 이유 (수정이 안되면 list
만 사용하면 될 것 같은데 왜 tuple
을 사용할까)
: 같은 데이터를 가지고 있으면 list
보다 저장 공간을 적게 사용하기 때문
d1, d2 = [1,2,3], (1,2,3)
type(d1), type(d2)
# Terminal
(list, tuple)
sys.getsizeof()
데이터의 용량값 구하기 (import sys
필요)
d1, d2 = [1,2,3], (1,2,3)
import sys
sys.getsizeof(d1), sys.getsizeof(d2)
# Terminal
(80, 64)
dict {}
순서가 없고, 수정이 가능 (순서값 대신 키값)
data3 = {'one': 1, 2: 'two'}
data3, type(data3)
# Terminal
({'one': 1, 2: 'two'}, dict)
데이터 수정 : update
data3 = {'one': 1, 2: 'two'}
print(data3)
data3['one'] = 10
print(data3)
# Terminal
{'one' : 1, 2 : 'two'}
{'one' : 10, 2 : 'two'}
데이터 삭제 : delete
del 변수이름[KEY값(범위선택가능)]
data3 = {'one': 1, 2: 'two'}
print(data3)
del data3['one']
print(data3)
# Terminal
{'one': 1, 2 : 'two'}
{2 : 'two'}
set
set()
집합 데이터 표현 (중복 데이터 허용하지 않음) (교집합, 합집합, 차집합)
data4 = set([1, 2, 3, 2])
data4, type(data4)
# Terminal
({1, 2, 3}, set)
교집합 &
, 합집합 |
, 차집합 -
d1, d2 = set([1,2,3]), set([2,3,4])
print(d1 & d2, d1 | d2, d1 - d2)
# Termianl
{2, 3} {1, 2, 3, 4} {1}
가장 마지막 줄의 변수는 데이터를 출력
d1 = 1
d2 = 2
# print(d1)
d1, d2
# Terminal
(1, 2)
기능의 알고리즘
answers = []
answers = [
'무엇을 상상하던 그 이상으로 안좋을 것이다.',
'뜻하는 대로 모든 일이 잘 풀릴 것이다.',
'네 자신을 돌아봐라.'
]
question = input()
question = input('고민을 입력하세요. 고민이 해결될 것입니다.')
random.randint()
idx = random.randint(0, len(answers) - 1)
answers[random_number]
answers[idx]
import random
answers = [
'무엇을 상상하던 그 이상으로 안좋을 것이다.',
'뜻하는 대로 모든 일이 잘 풀릴 것이다.',
'네 자신을 돌아봐라.'
]
question = input('고민을 입력하세요. 고민이 해결될 것입니다.')
idx = random.randint(0, len(answers) - 1)
answers[idx]
len()
answers = [
'무엇을 상상하던 그 이상으로 안좋을 것이다.',
'뜻하는 대로 모든 일이 잘 풀릴 것이다.',
'네 자신을 돌아봐라.'
]
len(answers) - 1
# Terminal
2
랜덤한 숫자 생성
import random
data = random.randint(0, 2)
data
# Terminal
0 or 1 or 2
데이터 입력 받기
data = input('insert data : ')
data
# Terminal
insert data : python
python
# 원본은 data1으로 남겨두고, data2에서만 2를 4로 바꾸고 싶음
# 얕은복사, 깊은복사
data1 = [1, 2, 3]
data2 = data1 # 얕은복사 : 주소값 복사
data3 = data1.copy() # 깊은복사 : 데이터 복사
print(data1, data2, data3)
data1[1] = 4
print(data1, data2, data3)
# Terminal
[1, 2, 3] [1, 2, 3] [1, 2, 3]
[1, 4, 3] [1, 4, 3] [1, 2, 3]
id()
: 식별자의 주소 값 출력
data1 = [1, 2, 3]
data2 = data1
data3 = data1.copy()
id(data1), id(data2), id(data3)
# Terminal
(140125954395200, 140125954395200, 140125954395392)
# 얕은 복사를 하면 주소 값이 같지만 깊은 복사를 하면 별도의 주소 값에 저장되는 것
# 원본을 남겨두고 새로 복사하고 싶다면 깊은 복사를 이용해야 함
손흥민 : 30골, 메시 : 20골, 호날두 : 10골
이 데이터를 list
와 dict
로 표현해보자
list 데이터 2개
players = ['손흥민','메시','호날두']
goals = [30, 20, 10]
players, goals
dict 데이터 1개
data = {'손흥민': 30, '메시': 20, '호날두': 10}
data
list 데이터 1개
data = [('손흥민', 30), ('메시', 20), ('호날두', 10)]
data
# list안에 tuple데이터가 들어간 것
문자열 데이터 표현
d1, d2 = "python1", 'python2'
# 따옴표 둘 다 가능, 문자열 안에 쌍따옴표나 홑따옴표를 사용해야하는 경우가 있음
d3, d4 = "jupyter's notebook", 'jupyter "note" book'
d5 = 'jupyter\'s "note"book'
# \ : 이스케이핑 문자 (의미를 갖는 것이 아니라 문자열로 기능한다는 의미)
d3, d4, d5
# Terminal
("jupyter's notebook", 'jupyter "note" book', 'jupyter's "note"book')
d6 = '''
jupyter
notebook
'''
print(d6)
# Terminal
jupyter
notebook
변수의 데이터를 문자열에 삽입
# 1
data1, data2 = '3000', '2000' # 따옴표로 숫자가 아닌 문자열로 기능, 데이터 타입 신경 써야 함
string = '저는 ' + data1 + '원중에 ' + data2 + '원을 사용하였습니다.'
string
# Terminal
'저는 3000원중에 2000원을 사용하였습니다.'
# 2
data1, data2 = 3000, 2000
string = '저는 {}원중에 {}원을 사용하였습니다.'.format(data1, data2)
# 데이터 타입 신경 안써도 됨
string
# Terminal
'저는 3000원중에 2000원을 사용하였습니다.'
# 3
string = f'저는 {data1}원중에 {data2}원을 사용하였습니다.'
string
# Terminal
'저는 3000원중에 2000원을 사용하였습니다.'
파이썬 문법
컴퓨터의 CPU, RAM, SSD(HDD) 자원을 활용하기 위한 방법
1. 변수 선언
2. 데이터 타입
int
float
bool
str
list
tuple
dict
set
: 식별자 1개, 데이터 n개list([])
tuple(())
dict({})
set(set())
masking
data[]
[index]
[key]
[start:end]
[start:end:stride]
데이터 선택 = 수정할 데이터
del 데이터 선택
print()
type()
sys.getsizeof()
id()