[Boostcamp] Day 1

유니·2023년 3월 10일
0

저번 기수에는 학점이 아직 남아있는 탓에 합류 취소한 부스트캠프,,
이번 기수에도 운 좋게 합격해서 5기 1주차 학습정리를 남깁니다 🫡


Day 1

Python & AI Math ~ 2-4강

Operating System

프로그램의 기반이 되는 환경
프로그램은 운영체제마다 다르게 실행되어 OS에 의존적임

File System

OS에서 파일을 저장하는 트리구조의 저장 체계

Directory : 파일과 다른 디렉토리 포함 가능
File : 컴퓨터에서 정보를 저장하는 논리적인 단위

트리구조 → root 디렉토리부터 시작하는 구조로 되어있음
절대 경로 : 루트 디렉토리부터 파일위치까지의 경로
상대 경로 : 현재 있는 디렉토리부터 타깃 파일까지의 경로

Terminal

키보드로 명령을 입력해 프로그램 실행
Command Line Interface : Text를 사용해 컴퓨터에 명령을 입력하는 인터페이스 체계
Graphic User Interface : 마우스로 클릭해서 명령을 입력하는 인터페이스 체계

Python

  • 플랫폼에 독립적 - OS에 상관없이 한번 프로그램을 작성하면 사용 가능함
  • 인터프리터 언어 - OS에 맞는 인터프리터만 설치하면 사용 가능해 소스코드를 바로 실행할 수 있게 지원 (통역기를 사용하는 언어)
    → 컴파일러와 달리 인터프리터는 소스코드를 별도 번역과정 없이 실행시점에 해석
  • 객체 지향 언어 - 실행 순서가 아닌 객체 중심으로 프로그램 작성 (각각 짜서 조립해 프로그램을 만드는 형식)
  • 동적 타이핑 언어 - 데이터에 대한 타입을 프로그램 실행 시점에 결정

개발 환경 → 운영체제, Python Interpreter, 코드 편집기
(MacOS 사용하며 Anaconda와 Jupyter Notebook을 사용함)

Variable

변수로 데이터를 저장하기 위한 메모리 공간의 프로그래밍상 이름
변수는 메모리 주소를 가지고 있고 변수에 들어가는 은 메모리 주소에 할당됨
→ 프로그램을 실행하면 정보를 메모리에 저장시킨 후 CPU가 순차적으로 정보를 해석하고 계산해 결과값을 전달

Basic Operation

  • 기본 자료형 (primitive data types)
    : 파이썬이 처리할 수 있는 데이터 유형
    integer, float, string, boolean
    (파이썬은 dynamic typing이기에 다른 언어와 달리 데이터 타입을 선언하지 않고 실행하는 시점에 타입을 결정 - 실행 시점에 얼만큼의 메모리를 잡을지 생각하기에 조금 느릴 수 있음)
  • 연산자(Operator)와 피연산자(operand)
    연산자: +, -, *, / 같은 기호들
    연산자에 의해 계산이 되는 숫자들 : 피연산자
  • 데이터 형 변환
    float(), int() 등의 함수를 사용해 데이터 형을 변환할 수 있음

List

시퀀스 자료형으로 여러 데이터들의 집합
다양한 데이터 타입을 포함할 수 있음
List의 특징 : 인덱싱, 슬라이싱, 리스트 연산, 추가 삭제, 메모리 저장 방식, 패킹과 언패킹, 이차원 리스트

  • 인덱싱 (Indexing)
    list에 있는 값들은 주소(offset)을 가져 이 주소를 사용해 할당된 값을 호출
  • 슬라이싱 (Slicing)
    list의 값을 잘라서 쓰는 것으로 주소 값을 기반으로 부분 값을 반환
  • 연산
    concatenation이나 in 등의 연산 함수 사용
number_1 = [1, 2, 3]
number_2 = [4, 5, 6]
number = number_1 + number_2 # 두 리스트 합치기
len(number) # 리스트 길이
1 in number # 리스트에 존재하는지 여부 반환
  • 추가와 삭제
    append, extend, insert, remove, del 등 사용
number.append(9) # 리스트에 데이터 추가
number.extend([7, 8]) # 리스트에 새로운 리스트 추가
number.insert(1, 4) # 1번째 주소에 4 추가
number.remove(3) # 리스트에서 3 삭제
del number[3] # 리스트에서 3번째 주소 리스트 객체 삭제
  • 다양한 데이터 타입이 하나의 리스트에 들어감
    → 파이썬은 메모리 주소를 계속 참조하기 때문

  • 리스트 메모리 저장 방식
    리스트 변수에 리스트 주소값이 저장됨
    = 기호를 사용할 때 같이 바뀌기 때문에 =[:]를 사용하여 복사

  • 패킹과 언패킹
    패킹 : 한 변수에 여러 개의 데이터를 넣는 것
    언패킹 : 한 변수의 데이터를 각각의 변수로 반환

fruit = ['apple', 'banana', 'kiwi'] # 패킹
a, b, c = fruit # 언패킹
  • 이차원 리스트
    리스트 안에 리스트를 만들어서 행렬 생성
import copy
fruit = ['apple', 'banana', 'kiwi']
need = ['spoon', 'fork', 'chopsticks']
food = [fruit, need]
food_2 = copy.deepcopy(food) # 이차원 리스트를 복사하는 방법

Function

함수 : 어떤 일을 수행하는 코드로 코드를 논리적인 단위로 분리한 것
함수 이름, parameter, indentation, 수행문, (return value)로 선언
함수를 제외한 메인 프로그램부터 실행하고 함수 호출 시에 함수 부분을 수행

parameter : 함수의 입력 값 인터페이스
argument : 실제 parameter에 대입된 값

Console in/out

input() 함수는 콘솔창에서 문자열을 입력 받는 함수
print() 함수를 이용해 출력 가능

  • % string
    : "%데이터타입 " %variable 형태로 출력 양식 표현
print("My name is %s" %"Yunhee")
print("Price is %3.2f" %20.123) # 앞에 3칸 띄우고 소수점 2자리까지만 출력해라
  • str.format() 함수
    : "~{데이터타입}~".format(argument)
name = "Yunhee"
price = 20.123
print("My name is {0}".format(name))
print("Price is {0:3.2f}.format(price)) # 3칸 띄우고 소수점 2자리까지만 출력
print("Price is {0:>3.2f}.format(price)) #오른쪽 정렬로 3칸 띄우고 소수점 2자리까지만 출력
  • f-string
name = "Yunhee"
print(f'My name is {name}')
print(f'{name:10}') # 왼쪽 정렬로 20칸 띄움
print(f'{name:>20}') # 오른쪽 정렬로 20칸 띄움
print(f'{name:*>20}') # 오른쪽 정렬로 20칸 띄우는데 *로 채우기

Condition

조건문 : 조건에 따라 특정한 동작을 하게 하는 명령어

  • if-else문
    조건문을 표현할 때 집합의 논리 키워드를 함께 사용 (and, or not 등)
  • 삼항 연산자
    : 조건문을 사용하여 참일 경우와 거짓의 경우의 결과를 한줄에 표현
a = True if value == 3 else False

Loop

반복문 : 정해진 동작을 반복적으로 수행하게 하는 명령문
→ 반복 시작 조건, 종료 조건, 수행 명령으로 구성

  • for문
    range() 사용해 시작과 끝값을 지정
    in 으로 문자열 하나씩 리스트로 처리 가능
  • while문
    조건이 만족하는 동안 반복 명령문 수행
    break로 특정 조건에서 반복을 종료할 수 있음
    continue로 특정 조건에서 남은 반복 명령을 skip할 수 있음

String

시퀀스 자료형으로 문자형 data를 메모리에 저장
1 byte 크기로 한 글자씩 메모리 공간이 할당됨
데이터 타입별로 메모리 공간을 할당 받은 크기가 다름

  • 인덱싱
    각 문자는 개별 주소를 가져 이를 사용해 할당된 값을 가져옴
  • 슬라이싱
    문자열의 주소값을 기반으로 문자열의 부분값을 반환
  • 덧셈과 뺄셈 연산 가능하며 in 명령으로 포함여부 체크 가능

함수 호출 방식

  • 값에 의한 호출 (Call by Value)
    함수에 인자를 넘길 때 값만 넘김
    → 함수 내에 인자 값을 변경할 때에 호출자에 영향을 주지 않음
  • 참조에 의한 호출 (Call by Reference)
    함수에 인자를 넘길 때 메모리 주소를 넘김
    → 함수 내에 인자 값을 변경할 때에 호출자의 값도 변경됨
  • 객체 참조에 의한 호출 (Call by Object Reference)
    객체의 주소가 함수로 전달되는 방식
    → 전달된 객체를 참조하여 변경할 때에 호출자에게 영향을 줌 but 새로운 객체를 만들 경우에는 호출자에 영향을 주지 않음

변수의 범위

지역변수 : 함수내에서만 사용
전역변수 : 프로그램 전체에서 사용 → 함수 내에 global 쓰면 전역변수와 연결

재귀함수 (recursive function)

자기자신을 호출하는 함수

function type hints

사용자에게 인터페이스를 명확히 알려줄 수 있음

def f(a:int)->int: # 파라미터가 int 타입이고 return값도 int다
return a

0개의 댓글