지금은마라톤중

멋사 AI스쿨 TIL - (3) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (3)

달리는중 2023. 1. 2. 16:41

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
Comments