강의 복습 내용

  • 파이썬의 기초 문법을 알아본다.
  • string함수와 list, 조건
  • 디버그, 코딩컨벤션 문법을 알아본다.

얻은 지식

  • 기초 지식관련하여 정리

python 변수

  • 정수(int), 실수(float), 문자형(string), 논리형(boolean)으로 타입이 있다.
    • 따로 타입을 작성하지 않고 실행시점에 타입이 결정되는 Dynamic Typing이다.
  • 형변환
    • float(a) : int -> float / string -> float
    • int(a) : float -> int / string -> int
  • list
    • 선언
      • color = ['red','blue','green']
    • 내부에 있는지 여부
      • 'blue' in color true,false로 반환한다.
    • 슬라이싱(slicing)
      • 문자열을 자른다.
      • color[시작:끝:step]으로 표현한다.
      •   color[0:3]// 0부터 3 전까지를 반환한다.
          color[:]//전부
          color[::2]//2 단위로 자르기
          color[::-1]//끝부터 시작하여 역순으로 진행한다
        
    • 추가 삭제
      • append,extend,insert,remove,del활용
      •   color.append("black")//요소 추가
          color.extend(["white","yellow"])//리스트확장
          color.insert(0,"orange")//특정위치에 삽입
        
      • 삭제는 color.remove("red"),del color[0]차이가 있다.
    • 이차원 리스트
      •   import copy
          copy.deepcopy(list)//2차원리스트 복사방법
        

python 함수

  • 선언
    •   def 함수명(parameter 1,parameter2,...):
            return 반환값
      
    • parameter / argument
      • parameter는 변수, 함수의 입력 값 인터페이스
      • argument는 parameter에 들어간 값

콘솔

  • 입력
    • input() 콘솔창으로 입력을 받는다.
      • input("입력하세요:")처럼 입력하는 부분에 안내 문구를 표시할 수 있다.
  • 출력
    • 출력 양식
    •   #일반적인 방식
        print("%d %d" % (1,2))//%string
        print("{}".format("a"))//format함수
        print("{index}".format("a"))//format의 index번호를 {}안에서 표시해줄수 있다.
        #3.6이후
        print(f"value is {변수명}")//fstring 편하다
      
    • 출력하는 형식
    •   #%string
        %10s //줄길이를 최소 10칸으로 맞춰준다.
        #format
        {0:10}//format함수에서도 사용가능하다. 0번째 index의 내용을 가지고 10칸으로 맞춰준다.
        {0:>10}//10칸에서 우측정렬한다.
        {0:<10}//10칸에서 좌측정렬한다.
        {0:^10}//10칸에서 가운데정렬한다.
        {0:*>10}//남는 칸은 * 채워준다.
        #fstring
        {변수명:10}//위와 같은 방식으로 사용하면 된다.
      

조건, 루프

  • 조건문
    • if,else,elif
    •   if <조건>:
            --수행
      
    • is,is not==,!=의 차이
      • is는 메모리주소를 비교, ==는 값을 비교
      • -5~256까지는 메모리주소도 동일하다.
    • 삼항 연산
      • a=True if v=10 else False//v가 10이면 참, 아니면 거짓을 a에 넣는다.
  • 반복문 for,while
    • for loop
      • for looper in [1,2,3]:
    • range
      • for looper in range(시작,끝,step):
      • 시작부터 끝전까지 looper에 넣어준다.
      • step이 -1이면 끝부터 역순으로 출력
      • for looper in "abcd"://문자열은 문자 하나하나를 looper에 입력된다.
    • for else
      • for이 전부 완료된 이후 else가 실행된다.
      • break시 else는 실행되지 않음
      •   for 조건:
              --수행
          else:
              --for 완료이후 수행
        

디버그

  • 테스트코드
    •   def main()://테스트할 내용들을 입력
            print(15===add(10,5))
            print(200==mul(10,20))
        if __name__ == "__main__"://제일 먼저 실행한다는 의미라고 한다.
            main()//main함수 호출
      

문자열

  • 한글자당1byte크기로 할당된다.
  • 오프셋은 왼쪽에서 0부터, 오른쪽에서 -1부터 시작한다.
  • 함수
함수명 기능
len(a) 길이 반환
a.upper()/a.lower() 대문자/소문자
a.capitalize() 앞글자만 대문자
a.titile() 제목형태, 띄어쓰기후 첫글자만 대문자
a.count(‘abc’) ‘abc’횟수 반환
a.find()/a.rfind(‘abc’) ‘abc’위치 반환(왼쪽기준,오른쪽기준)
a.startswith(‘abc’)/a.endswith(‘abc’) ‘abc’로 시작하는지,끝나는지 확인
a.strip()/a.rstrip()/a.lstrip() 좌우공백,우공백,좌공백 제거
a.split()/a.split(‘a’) 공백단위,a기준 문자열 자르기
a.isdigit() 문자열이 숫자인지
a.islower()/a.isupper() 소문자인지,대문자인지
  • row string
    • r"문자로 바로 인식 \n"// \n도 출력된다.

함수

  • dynamic typing
    • 타입 힌트를 표시해준다.
    •   def do_function(변수이름 : 타입) -> 반환타입:
            return 반환
      
  • doc string
    • 함수의 설명을 작성하는거
    • vscode의 extension을 활용
      • extension python docstring generator 설치
      • ctrl shift p에서 dockstring generate하면 한번에 만들어준다.

코딩 컨벤션

  • pep8에 정의되어있다.
    • 들여쓰기는 4칸 or tab
    • 한줄은 최대 79
    • 불필요한 공백 피하기
    • =연산자는 한칸이상 안띄움
    • 주석은 항상갱신, 불필요한 주석 제거
    • 코드의 마지막에는 한줄 추가
    • 소문자i,대문자i,대문자o는 금지
    • 함수명은 소문자, 밑줄로 나눔
  • flake8
    • pep8에 맞춰 잘 작성되어있는지 확인하는모듈
    • 설치 conda install flake8
    • 체크는 flake8 ~.py하면 확인해준다.
  • black
    • pep8에 근접하게 코드를 수정해준다
    • conda install black
    • black ~.py

피어세션 정리

  • 이현주b조교님
    • 카이스트 대학원
    • Gnn, 추천시스템 관련 핫한 분야라고 합니다.
  • 질문하는 자리 2주에 한번정도
  • 알파폴드 - 단백질 구조
  • kaggle
    • 데이터를 이용해 경쟁
  • 인공지능 신문
    • aitimes
  • 옥타브
    • 매트랩 옥타브

과제 후기

  • 처음 진행하는 과제이기도 하며, 깃으로 올려서 확인하는 방식에 익숙치 않아서 초반에 헤매었다.
  • 각 함수를 만들고 유닛테스트도 진행하고 여러모로 초반에 세팅하는 과정에서 오래 걸렸다.
  • 문제중 하나는 내용이 많이 길어서 훑어서 하다보니 일부 조건을 누락하여 디버깅이 오래 걸리기도 하였다.
  • 문제를 좀더 꼼꼼히 읽어서 문제의 조건을 바르게 인식해서 진행해야 할거같다.
  • 유닛테스트 바로 적용방법
    • test_~.py의 최하단에 작성하여 실행한다.
    •     if ___name__ == "__main__":
              unittest.main()
      
    • python -m unittest test_*.py
    • mock관련 test
    •     #from mock import patch
          from unittest.mock import patch