일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 인턴10
- BFS
- DP
- 파이썬
- 멋재이사자처럼
- likelion
- parklab
- intern10
- folium
- Join
- 시각화
- DFS
- Plotly
- SQL
- 프로젝트
- likelionlikelion
- TiL
- GNN
- 마이온
- 멋사
- pyhton
- 알고리즘
- 멋쟁이사자처럼멋쟁이사자처럼
- 그리디
- GIS
- ux·ui디자인
- 멋쟁이사자처럼
- Python
- seaborn
- 마이온컴퍼니
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (3) 본문
2023년 1월 2일
새해가 되고 첫 수업이었다.
오늘은 컴퓨터의 전체적인 개요와 파이썬에 대해 배웠다.
수업시간에 배운 내용과 수업에서 언급했지만 설명이 없었던 부분들을 추가적으로 공부하여 정리하였다.
컴퓨터 구조
1. 컴퓨터 : 계산을 수행하는 기계, 2진수 사용, 2GHz는 1초에 2번 0,1 판단할 수 있다
2. 컴퓨터 구조 : 중앙처리장치(CPU) - 연산수행,
주기억장치(RAM) - 저장된 파일을 메모리로 복사/ CPU와 SSD를 연결,
보조기억장치(SSD, HDD) - 파일 저장
3. OS : 물리적 장치를 컨트롤하는 소프트웨어, CPU를 할당
4. 프로그래밍 : OS에서 물리적 장치를 사용해 컴퓨터에게 연산과제를 수행하게 하는 것을 말함, 컴퓨터와 의사소통하는 수단,
APP을 만드는 방법
프로그래밍 작동
1. 컴파일러 : 코드를. binary(0,1)형태로 변형해준다.
2. 컴파일러 언어 : 속도 빠름, 코드 실행 전 컴파일 파일 필요(bulid 과정 필요), ex) 전체 번역해서 책을 읽음
인터프리터 언어 : 속도 느림, 컴파일 파일 없이 코드 실행(build 과정 필요 없음), 문법이 쉽다(like 파이썬), ex) 한줄씩 해석해서 읽음
파이썬의 특징
1. 인터프리터 언어여서 속도가 느림 -> numpy(C언어)로 연결하여 속도 향상 -> CPU로 전달
2. 어떤 종류의 OS에서도 같은 문법 사용
3. 객체지향적
4. Cpython, Jython, IronPython, Pypy
*파이썬 코드 작성할 때 가독성있게 작성하는 것이 좋다
참고자료)
- PEP 20 : The Zen of Python
https://peps.python.org/pep-0020/
- PEP 8 : The Style Guide of Python Code
https://peps.python.org/pep-0008/
* Rubber Duck Debugging
: 고무오리에게 코드를 설명하며 디버깅
코딩과 알고리즘
- 알고리즘 : 수행하는 과정 ex) 라면을 끓이는 방법
- 코딩 : 알고리즘을 컴퓨터언어로 표현
프로그래밍 잘하는 법
-> 많이 사용해봐야한다.!!!!
* 프로그래밍은 언어이다.
ex) 영어를 잘하려면 외국인들과 많이 대화해야하는 것과 비슷
Jupyter notebook
1. cell 단위로 코드를 실행하는 환경( 에디터 : IDE)
2. mode
- 명령모드(esc) : cell 수정
- 편집모드(enter) : cell 내용 수정
3. style
- 코드 : Python 문법 실행
- 텍스트 : markdown 문법 실행, 코드를 설명하거나 이미지를 추가할 때
4. shortcut
- Shift + enter : 코드실행
- Esc + a,b : 셀 생성
- Ctrl + space : 자동완성
컴퓨터의 CPU, RAM, SSD(HDD)를 사용하는 방법, 문법 학습
1. 번수선언
- RAM을 사용하는 문법 : 메모리에 저장공간을 만들어 데이터 저장
- 식별자 : 저장공간을 구별해주는 문자열
* 식별자규칙
- 문법 : 틀리면 에러발행 > 코드실행 X
- 대소문자, 숫자, _ 사용가능
- 가장 앞에 숫자 X : data_1(O), 1_data(X)
- 명령어(예약어) 사용 X : def, if, for(X) print(O)
- 컨벤션 : 틀려도 코드실행 O > 보기에 안좋음 : PEP8
- 변수 : jupyter_notebook : snake_case
- 상수 : 대문자로 작성 : JUPYTER_NOTEBOOL
# 식별자 1개, 데이터 1개
data1 = 1
# 식별자 n개, 데이터 n개
data2, data3 = 2, 3
# 식별자 n개, 데이터 1개
data4 = data5 = 4
%whos
# 매직(스페셜) 커멘드 : %, %% 문법
# % : 커멘드 한줄 단위, %% : 셀 단위
# %ls, %reset, %%time, %%wirtefile ...
2. 데이터타입
- RAM를 효율적으로 사용하는 문법
- 기본 데이터 타입
ex) int, float, str, bool, list, tuple, dict, set
- 컬렉션 데이터타입 : 식별자 1개, 데이터 n개
- iterable(순서있는), collection
ex) list, tuple, dict, set
- CRUD : create, read, update, delete
# 기본데이터 타입
data1, data2, data3, data4 = -200, 5.8, False, 'Happy NewYear'
# type() : 식별자의 데이터 타입 출력
type(data1), type(data2), type(data3), type(data4)
# 동적타이핑 : 변수선언시 데이터 타입 지정 X > 자동으로 데이터타입 지정
# 인터프리터 언어의 특징
# 컴퍼일러 언어 : int data1 = -200
- list : [] : 순서가 있고, 수정이 가능
- tuple : () : 순서가 있고, 수정이 불가능
- dict : {} : 순서가 없고, 수정이 가능, 순서값 > 키값
- set : set() : 집합 데이터 표현 : 중복 데이터 허용 X : 교집합, 합집합, 차집합
* 교집합 : &, 합집합 : |, 차집합 : -
* tuple 사용하는 이유
: 같은 데이터를 가지고 있으면 tuple이 list보다 저장공간을 적게 사용
1. 데이터 선택 : masking
- data[] : [idx], [key], [start:end], [start:end:stride]
- start에 데이터 X : 가장 앞, end에 데이터 X : 가장 뒤
- masking : -(음수) 사용
2. 데이터 수정 : update
- 데이터선택 = 수정할데이터
- 튜플은 불가
3. 데이터 삭제 : delete
- del 데이터선택
3. 연산자
- CPU를 사용하는 문법
- 산술, 할당, 비교, 논리, 멤버
4. 조건문
- 특정 조건에 따라서 다른 코드를 실행
- if, elif, else
5. 반복문
- 특정 코드를 반복적으로 실행
- while, for, break, continue, range(), zip(), enumerate()
- zip() : 여러 iterable을 병렬로 반복하여 각 항목이 있는 튜플을 생성
전달된 iterable의 길이가 다를 수 있음을 주의
for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
... print(item)
...
(1, 'sugar')
(2, 'spice')
(3, 'everything nice')
- enumerate(iterable, start = 0 ) : 열거하여 객체 돌려줌,
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
6. 함수
- 반복되는 코드를 묶어서 코드 작성 및 실행
- def, args, params, docstring,scope, lambda
7. 클래스
- 비슷한 기능의 변수, 함수를 묶어서 코드 작성 및 실행
- 객체지향을 구현한 문법
- class, self, __init__(), __add__(), __str__() #스페셜 메서드
* 메서드와 스페셜 메서드
-메서드 : 사용자가 (코들르 작성하여) 사용하는 메서드,
코드를 작성하는 사람이 원하는 로직을 원하는 이름의 메소드로 선언해서 자신이 원할때 사용
- 스페셜메서드 : 파이썬이 사용하는 메서드, 미리 이름별로 약속이 되어있는 메소드
파이썬에서 어떠한 일을 수행할때 약속되어있는 특정 스페셜메소드 이름으로 정의된 함수를 실행
8. 모듈, 패키지
- 모듈 : 변수, 함수 ,클래스를 파일(.py)로 묶어서 코드 작성 및 실행
- 패키지 : 여러개의 모듈을 디렉토리로 묶어서 코드 작성 및 실행
- import, from, as
9. 예외처리
- 코드 에러에 대한 처리를 하는 문법
- try, except, finally, raise
while True:
... try:
... x = int(input("Please enter a number: "))
... break
... except ValueError:
... print("Oops! That was no valid number. Try again...")
...
10. 입출력
- SSD(HDD)를 사용하는 문법 : 양쪽으로 가능 / RAM(data) > SSD(data) , RAM(data) < SSD(data)
- pickle : 텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 바이너리 파일로 저장하는 것
즉, 텍스트 형태로 파일을 저장하는 것이 아니라 dictionary, list, tuple과 같은 형태로 필요한 부분을 저장하는 것
장점 : 이미 필요한 형태대로 저장되어 있어 빠르다 , 단점 : 안전하지 않다.
# pickle 사용법
# pickle 파일 저장
pickle.dump('객체', '파일')
# pickle 파일 로드
pickle.load('파일')
# 예시
import pickle
list = ['a', 'b', 'c']
## Save pickle
with open('data.pickle', 'wb') as f:
pickle.dump(list, f)
## Load pickle
with open("data.pickle","rb") as fr:
data = pickle.load(fr)
print(data)
#['a', 'b', 'c']
- 얕은 복사와 깊은 복사
data1 = [2, 0, 2, 3]
data2 = data1 # 얕은복사 : 주소값 복사
data3 = data1.copy() # 깊은복사 : 데이터 복사
print(data1, data2, data3)
data1[3] = 2
print(data1, data2, data3)
- 변수의 속성값 출력 함수
: print() - 내용 출력, type() - class 출력 , sys.getsizeof() - 저장공간 크기 출력, id() - 주소값 출력
* '',""을 출력하기 위해서는 출력하고 싶은 따옴표 앞에 \를 사용
출처:
- https://docs.python.org/ko/3/tutorial/index.html
- https://gist.github.com/COCOLMAN/9dfc9210db03f96c3f5adcec0c9f38d8
- https://jlog1016.tistory.com/87
'멋쟁이사자처럼 > Python' 카테고리의 다른 글
멋사 AI스쿨 TIL - (6) (2) | 2023.01.05 |
---|---|
멋사 AI스쿨 TIL - (5) (0) | 2023.01.04 |
멋사 AI스쿨 TIL - (4) (1) | 2023.01.03 |
멋사 AI스쿨 TIL - (2) (2) | 2022.12.23 |
멋사 AI스쿨 TIL - (1) (0) | 2022.12.23 |