[230102] 멋쟁이사자처럼 AI SCHOOL 8기 'Python_박두진 강사님' 복습

조세연·2023년 1월 2일
0

멋사 AI SCHOOL 8기

목록 보기
5/35

Intro

프로그래밍

  • 컴퓨터 : 이진수로 계산을 빠르게 수행하는 기계
  • 컴퓨터의 구조
    1. CPU(중앙처리장치) : 연산 기능
    2. RAM(주기억장치) : CPU와 SSD의 연결다리. 임시저장기능
    3. SSD(HDD)(보조기억장치) : 저장 기능(Ctrl + S)
  • OS(물리적장치제어) : CPU, RAM, SSD를 컨트롤하는 소프트웨어
  • APP(물리적장치사용절차)
  • 프로그래밍 : OS에서 CPU, RAM, SSD를 사용해 컴퓨터에게 연산 과제를 수행하게하는 절차 및 방법

동작에 따른 언어의 종류

  1. 컴파일러 언어(Compiler Language) - C언어 등
    예) 영어원서의 모든 내용을 한국어로 번역 후 번역된 한국어책을 읽는 것
    - 장점: 속도 빠름
    - 단점: 코드 실행 전 Compile 파일 필요(Build 과정 필요)
  2. 인터프리터 언어(Interpreter Language) - Python 등
    예) 영어원서를 한 문장씩 한국어로 번역하면서 읽는 것
    - 장점: 문법 쉬움, 코드 실행 전 Compile 파일 필요 없음(Build 과정 필요 없음)
    - 단점: 속도 느림

파이썬의 특징

  1. 어떤 종류의 OS에서도 같은 문법 사용
  2. 인터프리터 언어 > 처리 속도 느림
    • Numpy(Numerical Python) : 계산용 파이썬 패키지. 파이썬의 느린 속도를 보완하여 데이터 분석을 가능케함.
  3. 객체지향적이라 협업에 용이

알고리즘과 코딩

  • Algorithm : 목적을 달성하기 위해 실행되어야하는 일의 절차

  • Coding : 알고리즘을 컴퓨터가 이해할 수 있는 언어로 번역하는 것

  • Programming : 알고리즘을 직접 작성하고 코딩까지 하는 것
    -> 알고리즘, 코딩 하나만 하는 것이 아니라 둘 다 할 줄 알아야 한다!

러버덕 디버깅(Rubber Duck Debugging)

: 러버덕에게 내 코드를 설명하면서 문제를 해결하는 것
(코딩을 하며 마주하는 대부분의 문제는 나의 코드를 설명하는 과정에서 해결된다. 동료의 시간은 소중하니 러버덕에게 설명하자)

프로그래밍을 잘하는 방법

프로그래밍은 언어다.
문법만 주구장창 연습하지 말고 자주 사용하고 적용하자!

Python

Python이 뭐야?

컴퓨터의 CPU, RAM, SSD(HDD)를 사용하는 방법

1. 변수 선언

  • RAM에 저장공간을 만들어 데이터를 저장하는 문법
  • 식별자(변수명) : 저장공간을 구분해주는 문자열
  1. 식별자 문법(틀리면 에러발생)
    • 대소문자, 숫자, _ 사용가능
    • 가장 앞에 숫자 X
    • 명령어(예약어) 사용 X
  2. 식별자 컨벤션(틀려도 에러발생x)
    • 변수 : jupyter_notebook (snake_case. 중간에 대문자 사용 X)
      *대문자 사용하는 건 camel_case
    • 상수 : JUPYTER_NOTEBOOK (대문자로 작성)

효율적인 변수 선언 코드를 위해 '식별자 n개, 데이터 n개', '식별자 n개, 데이터 1개'를 활용하자

fruits1, fruits2 = 'apple', 'orange' #식별자 n개, 데이터 n개
price1 = price2 = 3000 #식별자 n개, 데이터 1개

2. 데이터 타입

  • RAM을 효율적으로 사용하는 문법 (각 데이터 타입에 알맞게 메모리 용량을 배정)
  • 기본 데이터 타입: int, float, str, bool
  • 컬렉션 데이터 타입: list, tuple, dict, set
    -CRUD: Create, Read, Update, Delete
    -interable(순서 O - list(수정가능), tuple(수정불가)), collection(순서 X - dict, set)
  • 식별자의 데이터 타입 출력: type()
  • 동적타이핑: 인터프리터 언어의 특징. 변수선언 시 자동으로 데이터 타입 지정
  • masking: 데이터 선택
    - data[]: [idx], [key], [start:end], [start:end:stride]

Q. 데이터 수정이 안 되는 tuple, 왜 쓰나요?
A. tuple이 list보다 저장공간을 더 적게 사용. 굳이 데이터를 변경할 일이 없는 경우 튜플을 사용하는 것이 좋음

  • 집합: set()
    • 합집합: |
    • 차집합: -
    • 교집합: &

*** 데이터 복사 시 주의할 점
- 얕은 복사: 주소값 복사
(주소값을 참조하여 식별자와 데이터가 연결되어 있는 것. 복사된 데이터가 따로 만들어지는 것이 아님!!!)
- 깊은 복사: 데이터 복사
(다른 주소값을 가진 데이터가 만들어짐. copy() 사용)

data2 = data1 # 얕은 복사
data3 = data1.copy() # 깊은 복사
  • 변수의 데이터를 문자열에 삽입하는 가장 효율적인 방법
price1, price2 = 5000, 3000
string = f'저는 {price1}원 중에 {price2}원을 사용하였습니다.'

3. 연산자

  • CPU를 사용하는 문법 (CPU는 연산 담당이니까!)
  • 산술, 할당, 비교, 논리, 멤버

4. 조건문

  • 특정 조건에 따라 다른 코드 실행
  • if, elif, else

5. 반복문

  • 특정 코드 반복 실행
  • while, for, break, continue, range(), zip(), enumerate()
  • 내가 모르는 것들 미리 예습하기
  1. zip() : 2개의 리스트를 사용하여 for문을 작성하는 경우
x = [1, 2, 3]

y = ['a', 'b', 'c']

for n1, n2 in zip(x, y):
    print(n1, n2)

1 a
2 b
3 c

  1. enumerate() : for문의 결과값으로 인덱스도 함께 출력하고 싶은 경우(인덱스 시작값 지정 가능)
for i, letter in enumerate(['a','b,'c'], start=10):
	print(i, letter)

10 a
11 b
12 c

6. 함수

  • 반복되는 코드를 묶어 코드 작성 및 실행
  • def, args, params, docstring, scope, lambda

7. 클래스

  • 비슷한 기능의 변수, 함수를 묶어 코드 작성 및 실행
  • 객체지향을 구현한 문법
  • class, self, init(), add(), str()

8. 모듈, 패키지

  • 모듈: 변수, 함수, 클래스를 파일(.py)로 묶어 코드 작성 및 실행
  • 패키지: 여러 모듈을 디렉토리로 묶어 코드 작성 및 실행 (버전정보)
  • import, from, as
  • 함수 < 클래스 < 모듈 < 패키지

9. 예외처리

  • 코드 에러를 처리하는 문법
  • try, except, finally, raise

10. 입출력

  • SSD(HDD)를 사용하는 문법 (RAM <-> SSD)
  • pickle

Jupyter notebook, Google Colab Shortcut 모음집

shift + enter : 코드 실행 + 아래 새로운 셀 생성
ctrl + enter : 코드 실행 + 아래 새로운 셀 생성하지 않고 실행된 셀에 머무르기
esc + a : 현재 셀 바로 위에 새로운 셀 생성 (above)
esc + b : 현재 셀 바로 아래 새로운 셀 생성 (below)
ctrl + space : 자동완성 (오타방지)

profile
HR Analyst가 되고 싶은

0개의 댓글