부스트 캠프 ai tech 1주 2일차 Python Basic for AI (4)


8. 문자열(string)

  • char들이 저장되어있는 시퀸스 자료형
  • 기본적으로 list와 같은 형태로 데이터를 처리한다
    • Indexing, Slicing, +, * 연산은 리스트와 동일하게 수행한다

8.1 자주 사용하는 문자열 함수

함수명 기능
len(a) 문자열의 문자 개수를 반환
a.upper() 대문자로 변환
a.lower() 소문자로 변환
a.capitalize() 첫 문자를 대문자로 변환
a.strip(input)
a.rstrip(input)
a.lstrip(input)
좌우/우/좌 input을 없앰
a.split(input) input 기준으로 문자열을 나눠서 리스트로 반환
a.isdigit()
a.islower()
a.isupper()
문자열이 숫자/소문자/대문자인지 여부 반환
a.startswith(input)
a.endswith(input)
문자열이 input으로 시작/끝 나는 문자열 여부 반환
str.join(list) list의 원소들을 str로 연결해서 하나의 문자열로 나타낸다
단 list의 원소는 모두 문자열 type 이어야 한다

8.2 다양한표현

  • \ (백슬래쉬) : 특수하게 사용하는 문자열을 표현하기위해서 사용한다
    • 백슬래쉬를 표현하기 위해서는 \\ 두번 사용하면 된다.
  • \n : 줄바꿈을 의미하는 특수문자
  • \t : TAB
  • “””문자열””” : 줄바꿈도 자유롭게 입력 가능한 문자열 표현
  • r”문자열” : 특수문자를 무시하고 그대로 출력함
    1
    2
    print(r'이건 줄바꿈 기호입니다 \n')
    # output : 이건 줄바꿈 기호입니다 \n

부스트 캠프 ai tech 1주 2일차 Python Basic for AI (3)


6. Condition (조건문)

  • 조건에 따라 특정한 동작을 하게 하는 명령어
  • python 에서는 if, elif, else의 예약어를 사용한다
  • 조건을 나타내는 기준과 실행해야하는 명령으로 구성된다
  • 조건이 참일때만 실행한다
    1
    2
    3
    4
    5
    6
    7
    8
    if age <= 13:
    print('초등학생')
    elif age <= 16:
    print('중학생')
    elif age <= 19:
    print('고등학생')
    else:
    print('성인')
비교연산자 설명
x < y x가 y보다 작은지 검사
x > y x가 y보다 큰지 검사
x == y x와 y가 같은값인지 검사
x is y x와 y의 메모리 주소가 같은지 검사
x != y x와 y가 같은값인지 검사
x is not y x와 y의 메모리 주소가 같은지 검사
x >= y x가 y이상인지 검사
x <= y x가 y이하인지 검사
  • c언어에서는 0은 False, 1은 True를 나타내지만, python에서는 성립하지 않는다
  • 존재하면 참, 없으면 거짓으로 판단한다
  • and, or, not 논리키워드와도 같이 사용한다
    1
    2
    3
    if 1 # True
    if 0 # True
    if None # False

6.1 삼항연산자(Ternary operators)

  • 참과 거짓만 존재하는 결과를 한줄에 표현 할 수 있다.
    1
    2
    a = 1
    print('number' if isinstance(a, int) else 'not number')

    isinstance(var, datatype) -> boolean

    데이터의 타입을 판단하는 함수

7. 반복문

  • 정해진 동작을 반복적으로 수행하게 하는 명령문
  • for, while 명령 키워드가 존재한다

7.1 for 문

  • iterable 한 object의 원소의 갯수 만큼 반복시켜주는 반복문
  • range, enumerate등과 연계하여 사용이 가능하다
    1
    2
    3
    4
    5
    6
    for i in range(1, 10, 2):
    print(i) # 1, 3 ... 7 ,9
    for i in range(10, 1, -1):
    print(i) # 10, 9, ... , 2, 1
    for i, x in enumerate('apple'):
    print(i, x) # 0 a, 1 p, ... , 4 e

7.2 while 문

  • 조건을 만족하는 동안 반복적으로 명령을 수행한다
    1
    2
    3
    4
    5
    i = 0
    while i < 5:
    print(i)
    i += 1
    # output 0, 1, 2, 3, 4

7.3 반복문 제어

  • break : 특정 조건에서 가장 가까운 반복문을 종료한다
  • continue : 특정 조건에서 남은 명령을 skip 하고 다음 루프로 넘어간다
  • else : 반복조건이 만족하지 않은경우 반복 종료시 1회 수행한다.
    • break로 반복문에서 탈출할 경우에는 수행하지 않음

부스트 캠프 ai tech 1주 2일차 Python Basic for AI (2)

1일차 배운내용 2일차에 정리하는중…


4. Function(함수)

  • 어떤 일을 수행하는 논리적인 코드 단위
  • parameter, indentation(들여쓰기), return 등으로 구성된다
  • argument : 함수를 호출할 때 입력되는 파라미터들을 말한다
1
2
3
4
5
def im_function(im_parameter): #함수의 정의와 파라미터
im_return = im_parameter # 수행 내용
return im_return # 리턴값

result = im_function(im_argument)
  • 함수에 return 값이 존재하지 않을경우 함수는 None을 리턴한다

4.1 지역변수 & 전역변수

  • 지역변수(local variable) : 함수 내에서만 사용되는 변수
  • 전역변수(global variable) : 프로그램 전체에서 사용하는 변수
    • global을 사용하여 함수내에서 정의 할 수 있다.
1
2
3
4
5
6
def function(x):
global y
return x + y

y = 5
print(function(6)) # 11

4.2 재귀함수(recursive Function)

  • 자기자신을 호출하는 함수
  • 종료조건이 존재하여 종료조건을 만족시킬때 까지 스스로를 호출한다
  • python에서는 recursivelimit가 걸려있어서 따로 sys 모듈을 통해 한도를 늘려놓아야 한다.
  • 개인적으로 별로 안이용하고 싶음

4.3 Function type hints & Docstring

  • Function type hints
    python에서는 dynamic typinig 형식으로 작성하기 때문에 별도로 자료형을 적어두지 않기 때문에 처음 함수를 사용하는 사용자가 interface를 알기 어렵다는 단점이 있다.
    이를 해결하기 위해 type hints 기능을 제공한다.
    • parameter와 return의 type을 알려주는 type hints
1
2
def this_is_function(var_name: var_type) -> return_type:
pass
  • Docstring
    함수에 대한 상세 스펙(필요한 parameter, return, 수행하는 일 등등)을 사전에 작성한다.
    세개의 따옴표로 함수명 아래에 표시한다
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def function(x):
    """
    this is docstring
    return parameter
    x : int
    =======
    return int
    """
    return x

4.4 python 가이드 라인

  • 함수는 가능하면 짧게 작성한다
  • 함수이름에 역할, 의도를 명확하게 나타낼 수 있도록 한다
  • 하나의 함수에는 유사한 역할을 하는 코드만 포함한다
  • parameter로 받은 값 자체를 바꾸지 않는다
  • 공통 코드나 복잡한 수식은 함수로 나타낸다
  • PEP8 참고해보자

5. input & print & fommatting

  • input 함수는 콘솔창에서 문자열을 입력받는 함수이다(string 형태로 받아옴)
  • print 함수는 입력받은 값을 문자열으로 출력한다
  • , 를 사용할 경우 print문이 공백을 사이에 두고 연결된다
    1
    2
    3
    print("name :")
    name = input() # input -> 규범
    print("Hello", name) # Hello 규범
  • formatting을 통해서 출력양식의 형식을 지정할 수 있다.
type 설명
%s 문자열(string)
%c 문자 1개(character)
%d 정수 (int 형)
%f 부동소수(float 형)
%o 8진수
%x 16진수
%% % 문자 자체
  • %n.m(datatype)

    • string : n개의 문자로 맞춘다(공백으로 채운다). m 자리수까지만 나타낸다(혼용 불가)
    • int : n개의 문자로 맞춘다(공백으로 채운다). m 은 사용불가
    • float : n개의 문자로 맞춘다(공백으로 채운다). 소숫점 m자리까지 나타낸다
  • Python 3.6 이후의 PEP8에 근거한 formatting

    1
    2
    3
    name = Jone
    age = 20
    print(f'Hello, {name}. I am {age}.') # Hello, Jone. I am 20.
  • 예전방식

    1
    2
    print('%s %s' % ('one', 'two')) # one two
    print('%d %d'.format(1, 1)) # one two

부스트 캠프 ai tech 1주 1일차 Python Basic for AI (1)


1. Python의 특징

  • 독립적인 플랫폼
    운영체제에 상관없이 작동하는 언어이다.
  • 인터프리터 언어
    별도의 컴파일링 없이 컴퓨터가 바로 처리할 수 있는 언어이다. 속도는 컴파일러 언어에 비해서 느리지만 메모리가 적게 필요하다.
  • 객체지향적
    실행 순서가 아닌 단위 모듈 중심으로 프로그램이 작성된다.
  • Dynamic Typing 언어
    프로그램이 실행하는 시점에 프로그램이 사용해야하는 데이터 타입이 결정된다.

2. 변수

  • 데이터를 저장하기 위한 메모리 공간
    변수가 정의되면 변수는 메모리 주소를 할당 받고, 그 메모리 위치에 값을 저장한다. 그 외에 python에서 어떻게 변수를 할당받고 메모리를 관리하는지 알고싶으면 아래의 영상을 참고하는걸 추천한다.
  • 기본 자료형들은 +, -, *, %의 사칙연산이 가능 하다
  • Dynamic Typing을 지원하기 때문에 정의할 때에 자료형을 특정하지 않아도 된다.
    • 실행하는 시점에서 변수형을 확인하고 결정하기 때문에 타 언어보다 속도가 느리다.
    • 아래와 같이 자료형간 형 변환또한 가능하다.
1
2
3
4
5
a = 1 # int형으로 정의
int(a) # int() 로 형 변환 가능
str(a) # str로 재정의 이때의 값은 '5'
float(a) # float형으로 재정의 이때의 값은 '5.0'
bool(a) # boolean 형으로 재정이 이때의 값은 True

3. 리스트

  • 여러 데이터들을 묶어서 표현할 수 있는 자료형
  • python 에서는 리스트 내부에 여러가지 자료형이 동시에 존재할 수 있다.

1. List Indexing & Slicing

  • Indexing : 리스트에 있는 값들은 주소를 사용해 호출이 가능하다
  • index를 넣는 곳에 음수값을 넣어서 뒤에서부터 호출 할 수 있다.
  • len(object_name) : object의 길이를 반환한다
    1
    2
    3
    4
    5
    6
    color = ['red', 'blue', 'green']
    print(colors[0]) # red
    print(colors[-1]) # green
    print(len(colors)) # 3
    color[0] = 'Yellow' # ['Yellow', 'blue', 'green']

  • Slicing : list의 값들을 잘라서 부분적으로 표현할 수 있다.
  • index과 같이 음수값 통해 역순으로도 가능하다.
1
2
3
4
5
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(numbers[0:6]) # [1, 2, 3, 4, 5, 6] index 0번부터 6개
print(numbers[:]) # [1, 2, 3, ... , 7, 8, 9] 처음부터 끝까지
print(numbers[::2]) # [1, 3, 5, 7, 9] 2칸단위로 슬라이싱
print(numbers[-5::-1]) # [6, 5, 4, 3, 2, 1] 뒤에서 5번째부터 역순으로 슬라이싱

2. List 연산

  • + : 두 리스트를 합쳐준다
  • * : 리스트를 n회 반복해서 늘린다
    1
    2
    3
    4
    num1 = [1, 2, 3]
    num2 = [3, 4, 5]
    num1 + num2 # [1, 2, 3, 3, 4, 5]
    num1 * 2 # [1, 2, 3, 1, 2, 3]
  • list.append(element) : list에 element를 추가한다
  • list.extend(iterable) : list에 iterable의 원소들을 추가한다
  • list.insert(index, element) : list의 특정 index 위치에 element를 삽입한다
  • list.remove(element) : list의 특정 element를 삭제한다
1
2
3
4
5
num = [1, 2, 3]
num.append([4, 5]) # [1, 2, 3, [4, 5]]
num.extend([1, 2]) # [1, 2, 3, [4, 5], 1, 2]
num.insert(0, 'a') # ['a', 1, 2, 3, [4, 5], 1, 2]
num.remove(1) # ['a', 2, 3, [4, 5], 2]

3. 2-dim list

  • 행렬
  • 기존의 리스트와 비슷하지만, 복사할때 주의할점이 필요하다
    리스트를 복사할때 리스트 주소가 복사되기 때문에 내부의 리스트는 동일한 주소의 값을 가져 하나의 리스트를 변경하면 다른 리스트값도 변경됨
    • python 모듈중 copy의 deepcopy를 이용하여 복사
      1
      2
      3
      4
      mat = [[1, 2, 3], [4, 5, 6]]
      mat2 = mat
      mat[1][0] = 2 # [[2, 2, 3], [4, 5, 6]]
      mat2 # [[2, 2, 3], [4, 5, 6]]

부스트 캠프 ai tech 1주 1일차 Basic


1. OS(Operating System) 운영체제

  • Application이 동작 할 수 있는 환경을 말한다.
  • 컴퓨터의 하드웨어와 App이 소통하는 창구 역할을 한다.
  • ex) 윈도우즈, MacOS, Ubuntu(Linux)
  • 자세한 내용은 CS에서 따로 정리를 하고있다.

2. File System

  • File system 이란?
    • 파일을 저장하는 트리구조의 데이터 저장체제
  • Directory 이란?
    • 아래에 정의하는 File이나 다른 Directory를 저장할수 있는 것
    • 폴더 또는 디렉토리라고 할 수 있다.
  • File 이란?
    • 의미있는 정보를 저장하는 논리적인 단위
    • run, write, read 등을 할 수 있다.
    • 파일 명과 확장자로 종류나 쓰임새를 식별 가능하다.
  • 경로란?
    • 절대경로 : root부터 현재 파일 위치까지의 경로
    • 상대경로 : 현재 활성화된 디렉토리부터 타겟 파일까지의 경로

3. Terminal

  • 키보드를 통하여 명령을 하고, 프로그램을 실행시키는 인터페이스
  • windows의 CMD, PowerShell 과 Mac, Linux의 Terminal 등이 해당한다.