강의 복습 내용
- 파이썬의 기초 문법을 알아본다.
- string함수와 list, 조건
- 디버그, 코딩컨벤션 문법을 알아본다.
얻은 지식
- 기초 지식관련하여 정리
python 변수
- 정수(int), 실수(float), 문자형(string), 논리형(boolean)으로 타입이 있다.
- 따로 타입을 작성하지 않고 실행시점에 타입이 결정되는 Dynamic Typing이다.
- 형변환
float(a)
: int -> float / string -> floatint(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 완료이후 수행
- for loop
디버그
- 테스트코드
-
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하면 한번에 만들어준다.
- extension
코딩 컨벤션
- 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