2023년 1월 2일 (월)
박두진 강사님의 수업으로 본격적인 파이썬에 대한 강의가 시작되었습니다.
[Intro_Python]
파이썬 언어에 대한 이해를 돕기 위해서, 프로그래밍이 무엇인지에 대한 전반적인 흐름을 익혔습니다.
What is Programing?
: OS(Operating System)에서 CPU, RAM, SSD를 사용하여 컴퓨터에게 연산 과제를 수행하게 하는 절차 및 방법
1. Computer Structure
- CPU - 중앙처리장치
- RAM - 메모리
- SSD (HDD) - 하드디스크
EX) 엑셀파일을 실행해서 연산 수행 후, 파일 저장하는 과정
Step 1. 엑셀 실행
-SSD에 있는 Excel Code를 RAM으로 이동 (loading)
Step 2. 엑셀 화면 출력
-RAM에 있는 Excel Code 저장
Step 3. 엑셀 연산
-CPU를 이용해서 연산
Step 4. 엑셀 파일 저장
-RAM에 있는 데이터를 SSD에 저장
2. Compiler
Code를 Binary(2진수)로 바꿔주는 역할을 하며, 언어마다 다름
- Compiler Language : Build과정이 필요(코드 실행 전 Compile 파일 필요), 속도 빠름
- Interpreter Language : Build과정이 불필요
[python 환경 설정 방법]
1. 개인pc 세팅
Python / ipy, jupyter notebook 또는 다른 에디터로 작업 (직접 환경설정을 해야 함)
-> Python + ipy, jupyter notebook이 합쳐진 게 Anaconda
2. 서버pc 세팅
Python / ipy, jupyter notebook 또는 다른 에디터로 작업 (직접 서버와 인터넷 설정을 해야 함)
pc브라우저에서 IP망으로 서버 컴퓨터에 작업
3. 구글서버 세팅
Colab을 pc브라우저에서 사용 (환경설정이 알아서 진행되서 편함)
[Python 문법 1]
본격적인 파이썬 문법에 대한 수업이 진행되었습니다 !! 오늘은 변수 선언, 데이터 타입에 대해서 자세히 알아보는 시간을 가졌습니다 :)
1. 변수 선언
: RAM에 저장공간을 만들어서 데이터를 저장하는 문법
* 식별자 : 저장 공간을 구별해주는 문자열
(1) 식별자 규칙
- 문법 : 틀리면 에러가 발생 (코드 실행 안 됨)
-대소문자, 숫자, _ 사용가능
-가장 앞에 숫자는 입력 못 함 ex) 1_data (x)
-명령어(예약어) 사용 못 함 ex) def, if, for
- 컨벤션 : 틀려도 코드 실행은 되지만 보기에 좋지 않음 (PEP8 참고하기)
-변수 : jupyter_notebook (snake_case)
-상수 : 대문자로 작성 ex) JUPYTER_NOTEBOOK
(2) 변수 선언 방법
- 식별자 1개, 데이터 1개
data1 = 1
- 식별자 n개, 데이터 n개
data2, data3 = 2, 3
- 식별자 n개, 데이터 1개
data4 = data5 = 4
QUIZ
# 방법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)
2. 데이터 타입
: RAM을 효율적으로 사용하는 문법
* 동적 타이핑 : 인터프리터 언어의 특징으로, 변수 선언을 할 때, 데이터 타입 지정을 하지 않아도 자동으로 데이터 타입이 지정
(1) 기본 데이터 타입
- int
- float
- bool
- str
(2) 컬렉션 데이터 타입
- list
- tuple
- dictionary
- set
구분
|
특징
|
선언
|
list
|
순서가 있고, 수정이 가능
|
[ ]
|
tuple
|
순서가 있고, 수정이 불가능
|
( )
|
dict
|
순서가 없고, 수정이 가능 (키값을 사용해서)
|
{ : }
|
set
|
집합 데이터 표현, 중복 데이터 허용하지 않음
(교집합, 합집합, 차집합) |
set( )
|
* list 대신 tuple을 사용하는 이유
: 같은 데이터를 가지고 있으면 tuple이 list보다 저장 공간을 적게 사용.
import sys
d1, d2 = [1, 2, 3], (1, 2, 3)
sys.getsizeof(d1), sys.getsizeof(d2)
출력 결과 -> (80, 64)
* 교집합, 합집합, 차집합
# 교집합 : &, 합집합 : |, 차집합 : -
d1, d2 = set([1, 2, 3]), set([2, 3, 4])
print(d1 & d2, d1 | d2, d1 - d2)
(3) masking, update, delete
- masking (데이터 선택)
-형태 : data[ ]
-[ ] 안에는 [idx], [key], [start:end], [start:end:stride] 로 입력 됨
-start에 데이터 x : 가장 앞, end에 데이터 x : 가장 뒤
-음수 사용하면 뒤에서부터 데이터가 선택 됨
data1 = [1, 2, 3, 'A', 'B']
data1[3], data1[2:4], data1[:2], data1[3:], data1[:], data1[::2]
data1[-2], data1[-2:], data1[::-1]
출력 결과 -> ('A', [3, 'A'], [1, 2], ['A', 'B'], [1, 2, 3, 'A', 'B'], [1, 3, 'B'])
('A', ['A', 'B'], ['B', 'A', 3, 2, 1])
- update (데이터 수정)
-형태 : 데이터 선택 = 수정할 데이터
data1 = [1, 2, 3, 'A', 'B']
data1[3] = 'C'
print(data1)
출력 결과 -> [1, 2, 3, 'C', 'B']
data3 = {'one': 1, 2: 'two'}
data3['one'] = 10
print(data3)
출력 결과 -> {'one': 10, 2: 'two'}
- delete (데이터 삭제)
-형태 : del 데이터 선택
data3 = {'one': 10, 2: 'two'}
del data3[2]
print(data3)
출력 결과 -> {'one': 10}
(4) 깊은 복사 vs 얕은 복사
# 실수 할만한 코드 1
# 얕은복사, 깊은복사
data1 = [1, 2, 3]
data2 = data1 # 얕은복사 : 주소값 복사
data3 = data1.copy() # 깊은복사 : 데이터 복사
print(data1, data2, data3)
data1[1] = 4
print(data1, data2, data3)
출력 결과 -> [1, 2, 3] [1, 2, 3] [1, 2, 3]
[1, 4, 3] [1, 4, 3] [1, 2, 3]
# id() : 식별자의 주소값 출력
id(data1), id(data2), id(data3)
출력 결과 -> (139698000010496, 139698000010496, 139698000793344)
얕은 복사, 깊은 복사에 대해서 추가 설명을 찾아서, 링크를 남겨봅니다.
[오늘의 과제]
"PEP 8 – Style Guide for Python Code" 읽어보기 !
[수업을 마친 소감]
전반적으로 파이썬을 코딩하는 게 어떤 행위인지에 대해서 개념을 잡을 수 있는 시간이었습니다.
컴퓨터 저장장치에서 어떤 과정을 거치는지 대략적으로 머릿속으로 그리면서 코드가 출력되는 결과물을 보니,
메모리에 어떤 형태로 데이터를 입력하는 게 목적에 적합하게 사용될 수 있을까 앞으로 고민할 수 있는 방향을 다질 수 있는 기초를 배운 것 같아요 ~
메모리에 10을 넣었는데, 메모리 주소, 타입, 저장공간에 대한 정보가 파생되어 나오는 과정이 더욱 흥미롭게 다가왔어요 ! (호기심 발동 *_*)
이제 나만의 실험실에서 변수 선언, 데이터 문법의 퀴즈를 풀어보며,
이런 케이스에는 어떻게 해야하지? 하며 문제를 해결해가는 과정을 즐겨보려고 합니다 !
'AI School 8기 (LIKELION, 22.12~23.05)' 카테고리의 다른 글
[AI School/TIL] Python 5일차_23.01.06 (0) | 2024.02.23 |
---|---|
[AI School/TIL] Python 4일차_23.01.05 (0) | 2024.02.23 |
[AI School/TIL] Python 3일차_23.01.04 (0) | 2024.02.23 |
[AI School/TIL] Python 2일차_23.01.03 (0) | 2024.02.23 |
[AI School/WIL] 1주차 자기주도 학습_22.12.23 (0) | 2024.02.23 |