멋사 AI SCOOL 5일차
: Python 기초
* Keywords
#프로그래밍_개요
#Python
#list #tuple #dict #set
#del
* Retrospective
😍 Liked
: 프로그래밍 개요 부분은 이전에도 궁금했던 것인데 마땅히 배울만한 곳이 없어서 아쉬웠다. 그런데 이번 강의를 통해 배울 수 있어서 좋았음
예전에 들었던 강의의 강사님이었음
📚 Learned
: 프로그래밍 개요
파이썬 다시 훑어보기 (문자열 포맷팅)
PEP
💦 Lacked
: 새롭게 배웠다기 보다는 이미 알던 것을 다시 훑어 본 느낌이라 강의가 루즈했음. 물론 내 탓임. 하지만 하루가 다르게 빨리 진도 나갈 것을 알기 때문에 시간 있을 때 복습하고 배울 것들 미리 보는 게 좋음
🙏 Longed for
: 아는 내용이라도 집중해서 공부하기
* Today I Learned
What is Programing?
- Computer(컴퓨터는 계산을 수행하는 기계)
- Computer Structure(중앙저리장치(CPU), 주기억장치(RAM), 보조기억장치(SSD))
- OS(중앙처리장치, 주기억장치, 보조기억장치를 컨트롤 하는 소프트웨어)
- Programing(OS에서 CPU, RAM, SSD를 사용하여 컴퓨터에게 연산 과제를 수행하게 하는 절차 및 방법, 컴퓨터와 의사소통의 수단, App을 만드는 방법)
1) Run Excel
- excl 실행, ssd에 있는 excel code를 RAM으로 이동 -> loading
2) Display Excel
- RAM에 excel code 저장, excel 화면에 출력
3) Calculate Numbers
- CPU를 이용하여 연산 수행
4) Save Excel File
- RAM에 있는 데이터 SSD에 저장
How programing works?
• Compiler
- code -> Binary(2진 형태로)
• 동작에 따른 언어의 종류
- 컴파일러 언어: Compiler Language: 속도 빠름, 코드 실행 전 Compile파일 필요(Build 과정 필요)
-> 번역서를 읽는 것, build라는 번역 과정이 필요 but 번역이 끝나면 읽기 빠름 JAVA, C언어 같은
- 인터프리터 언어: Interpreter Language: 속도 느림, Compile 파일 없이 코드 실행(Build 과정 필요 없음)
-> 원서 읽을 때 한 줄 읽고 해석하고 이해하고, 번역 과정 필요 x but 번역 해가면서 읽어야 해서 속도가 느림, 파이썬 같은(문법이 쉬움)
Features of Python
• 플랫폼에 독립적
- 어떠한 종류의 OS에서도 같은 문법을 사용
• 인터프리터 언어
- 한줄씩 컴파일링 하면서 코드를 수행 -> 처리 속도가 느림
- Numpy가 파이썬의 느린 처리속도를 보완 -> 데이터 분석 가능
• 객체지향적
- 실제 세계를 모델링하여 공통적인 기능을 묶어서 개발하는 방법 -> 협업이 용이
The kind of Python
• Cpython
• Jython
• IronPython
• Pypy
Python Enhancement Proposals
• PEP:
- PEP 20: 파이썬 설계 원리, 파이썬 프로그래밍 언어 설계에 영향을 준 20가지 소프트웨어 원칙(언어의 철학)
- PEP 8: 파이썬 개선 제안서, 파이썬 코드를 어떻게 구상할 지 알려주는 스타일 가이드
Coding? Algorithm?
코끼리를 냉장고에 넣는 방법!
• Algorithm -> 생각, 절차
- 코끼리를 냉장고 앞으로 이동
- 냉장고 문을 연다
- 코끼리를 냉장고에 넣는다
- 냉장고 문을 닫는다
• Coding -> 글자로 바꾸는
- move(elephant)
- open(fridge)
- input(elephant, fridge)
- close(fridge)
둘다 너무 중요: 알고리즘 어떻게 생각하느냐에 따라서 실행되지 않을 수도 있음
알고리즘, 코딩 같이 하는 사람이 프로그래머
코드만 작성하는 사람은 코더
Rubber Duck Debugging
디버깅 날 때 무작정 도움 요청하기 보다는 하나하나 설명하며 하다보면 오류가 난 부분을 알아챌 수 있음
To be good at Programming
- 프로그래밍 언어이다
- 언어를 잘 하려면 많이 사용해봐야 함
- 프로그래밍을 잘 하려면 많이 사용해봐야 한다 -> 여러번 코드 작성
colab
• jupyter notebook
- cell 단위로 코드 실행하는 환경(에디터: IDE)
• mode
- 명령모드, 편집모드
• style
- 코드: python 문법 실행 / 텍스트: markdown 문법 실행
- shift + enter : 코드 실행
- esc + a, b : 셀 생성
- ctrl + space : 자동완성
Python
1) 변수선언
2) 데이터 타입
3) 연산자
4) 조건문
5) 반복문
6) 함수
7) 클래스
8) 모듈, 패키지
9) 예외처리
10) 입출력
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, %%writefile ...
Quiz1
# RAM을 표현하는 그림대로 변수를 선언하고, 데이터를 출력
goal1 = 30
goal2 = 30
player1 = 'son'
player2 = 'messi'
print(player1, goal1, player2, goal2)
son 30 messi 30
2) 데이터 타입
RAM를 효율적으로 사용하는 문법
- 기본 데이터타입
- int, float, bool, str
- 컬렉션 데이터타입 : 식별자 1개, 데이터 n개
- list, tuple, dict, set
- CRUD : create, read, update, delete
• list : [] : 순서가 있고, 수정이 가능
data1 = [1, 2, 3, 'A', 'B']
- 데이터 선택: masking
data[] : [idx], [key], [start:end], [start:end:stride]
- 음수도 사용 가능 -> 음수는 뒤에서 부터
- str도 사용 가능
• tuple : () : 순서가 있고, 수정이 불가능
data2 = (1, 2, 3, 'A', 'B')
- tuple 사용하는 이유: 같은 데이터 가지고 있으면 tuple이 list보다 저장공간 적게 사용
import sys
sys.getsizeof(d1), sys.getsizeof(d2)
sys.getsizeof() -> 저장공간 얼마나 사용하는지 알 수 있음
• dict : {} : 순서가 없고, 수정이 가능, 순서값 > 키값
data3 = {'one': 1, 2: 'two'}
- 데이터 삭제 : del 데이터 선택
• set : set() : 집합 데이터 표현 : 중복 데이터 허용 X : 교집합, 합집합, 차집합
data4 = set([1, 2, 3, 2])
d1 & d2 #교집합
d1 | d2 #합집합
d1 - d2 #차집합
Quiz 2: 해결의 책 만들기
# 1. 답변 리스트 생성: answer = []
answer = ['잘 될 거야',
'걱정하지마시오',
'내가 하는 것이 곧 답']
# 2. 질문 받기 : question = input()
question = input('질문을 입력하시오: ')
# 3. 답변 리스트의 갯수 만큼의 범위에서 랜덤한 정수 1개 생성: random.randint()
import random
idx = random.randint(0,2) #idx = random.randint(0,len(answer)-1)
# 4. 랜덤한 정수에 해당하는 답변 리스트의 데이터 출력: answer[random_number]
answer[idx]
question은 그냥 질문 받은 것 넣기 위한 변수 큰 의미 x
idx = random.randint(0,len(answer)-1) -> 만일 answer가 여러개인 경우 or 바뀔 경우에 매번 수정하기 힘드니 len(answer)-1 하는 것임
얕은 복사, 깊은 복사
data1 = [1, 2, 3]
data2 = data1 # 얕은복사 : 주소값 복사
data3 = data1.copy() # 깊은복사 : 데이터 복사
print(data1, data2, data3)
data1[1] = 4
print(data1, data2, data3)
id(): 식별자의 주소값 출력
Quiz 3: 데이터를 list와 dict로 표현
손흥민: 30골, 메시: 20골, 호날두: 10골
# 두 개의 리스트로
player = ['손흥민', '메시', '호날두']
goal = [30, 20, 10]
player, goal
# 한 개의 딕셔너리로
soccer = {'손흥민': 30, '메시': 20, '호날두': 10}
soccer
# 한 개의 리스트로
data = [('손흥민', 30), ('메시', 20), ('호날두', 10)]
data
변수의 데이터를 문자열에 삽입
data1, data2 = '3000', '2000'
string = '저는 ' + data1 + '원중에 ' + data2 + '원을 사용하였습니다.'
string
string = '저는 {}원중에 {}원을 사용하였습니다.'.format(data1, data2)
string
string = f'저는 {data1}원중에 {data2}원을 사용하였습니다.'
string
'저는 3000원중에 2000원을 사용하였습니다.'
'저는 3000원중에 2000원을 사용하였습니다.'
'저는 3000원중에 2000원을 사용하였습니다.'
* Homework
pep8 문서 읽어보기
https://peps.python.org/pep-0008/
- 가독성이 중요
- 들여쓰기
- 최대 줄 길이는 79문자로 제한
- import는 분리된 줄에 있어야 함
- 작은 따옴표(' ')나 큰 따옴표(" ") 는 내가 알아서 결정하지만 하나를 정하면 그것을 고수해야 함
- 공백 -> spam(ham[1]) O, spam( ham[ 1 ] ) X
if x == 4: print x, y O, if x == 4 : print x , y X
FILES = [
'setup.cfg',
'tox.ini',
]
initialize(FILES,
error=True,
)
O
FILES = ['setup.cfg', 'tox.ini',]
initialize(FILES, error=True,)
X
: 그냥 눈에 들어오는 것만 작성
정리하자면 가독성이 좋게, 한눈에 봐도 알아 볼 수 있게 작성하는 것이 중요한 것 같음
-> 보기도 좋고, 프로그램도 효율적으로 돌아감
* Reference
PEP - 8에 대하여
깊은 복사, 얕은 복사 시각화
문자열 포맷팅
https://www.daleseo.com/python-f-strings/
* Retrospective
😍 Liked
: 프로그래밍 개요 부분은 이전에도 궁금했던 것인데 마땅히 배울만한 곳이 없어서 아쉬웠다. 그런데 이번 강의를 통해 배울 수 있어서 좋았음
예전에 들었던 강의의 강사님이었음
📚 Learned
: 프로그래밍 개요
파이썬 다시 훑어보기 (문자열 포맷팅)
PEP
💦 Lacked
: 새롭게 배웠다기 보다는 이미 알던 것을 다시 훑어 본 느낌이라 강의가 루즈했음. 물론 내 탓임. 하지만 하루가 다르게 빨리 진도 나갈 것을 알기 때문에 시간 있을 때 복습하고 배울 것들 미리 보는 게 좋음
🙏 Longed for
: 아는 내용이라도 집중해서 공부하기
'AI SCHOOL > TIL' 카테고리의 다른 글
[TIL] 멋사 AI SCOOL DAY 8 - 파이썬 함수, 상관계수 (0) | 2023.01.05 |
---|---|
[TIL] 멋사 AI SCOOL DAY 7 - 파이썬 함수 (0) | 2023.01.04 |
[TIL] 멋사 AI SCOOL DAY 6 - 연산자, 조건문, 반복문 (1) | 2023.01.03 |
[week 1] 공공 데이터 분석 (2) | 2022.12.23 |
[Week 1] WIL (0) | 2022.12.23 |