분류 전체보기
-
리팩토링Python study/코딩스타일 2021. 12. 3. 14:47
기본적인 리팩토링 1. 함수 추출하기 목적과 구현을 분리한다. 코드를 보았을때 "어떻게" 보다 "무엇"을 하는지 한 번에 알수 있도록 함수의 이름을 짓자 하나의 함수는 한가지 목적을 가지고 한가지 일만을 해야한다. 즉 한가지 일만 할수 있도록 함수를 쪼개고 추출하자 Before after 추가 설명과 팁 단 한 줄짜리 함수라도 상관없다. 무엇을 하는지 명확하게 드러나야 한다. 함수의 길이는 한 눈에 들어와야 한다. 두 번 이상 사용될 코드는 함수로 만들자 함수 이름을 당장 짓기가 어려우면, 주석으로 먼저 무슨 일을 하는지 적어두자. 반면, 코드 자체로 무엇을 하는지 명확히 보인다면, 굳이 추출하지 않는다. 2. 변수 추출하기 복잡한 표현식은 과정을 나누어 표현한다. 각 과정을 잘 드러내는 임시 변수를 사..
-
코드에서 나는 악취Python study/코딩스타일 2021. 12. 3. 13:53
나쁜 코드들은 좋지 못한 특징들을 가지고 있는데, 이런 코드들은 악취가 난다고 표현한다. 이런 코드들은 리팩터링의 대상이 된다. 꼭 리팩토링이 아니라도, 이런 코드가 나쁘다는 '감'정도는 가지고 있어야 한다. 책에서는 24가지를 말하는데, 내가 생각하는 중요한 일부만 정리한다. 명료하고 정확하지 않은이름 변수, 함수, 클래스, 파일 이름 모두 해당된다. 이름은 항상 "무엇을 하는지" 명확하게 드러내야 한다. 이름은 역할과 본질을 나타내 준다. 코딩할 때 가장 어려운 파트이기도 하다 중복 코드 중복 코드가 있다면, 수정할 때 2번 이상 수정해야 한다. 까먹어서 수정 안 하는 등 위험하다. 3번 이상 중복 코드가 등장하면 어떻게든 한 곳으로 모아주어야 한다. 긴 함수, 긴 클래스, 긴 매개변수 목록 길수록 ..
-
구현Python study/알고리즘 2021. 11. 9. 23:35
구현시 고려해야할 메모리 제약 사항 C/ C++ , JAVA 에서 정수형 종류에 따른 범위 C / C++ int 4 signed –2,147,483,648 ~ 2,147,483,647 unsigned int 4 unsigned 0 ~ 4,294,967,295 __int8 1 char -128 ~ 127 unsigned __int8 1 unsigned char 0 ~ 255 __int16 2 short, short int 및 signed short int –32,768 ~ 32,767 unsigned __int16 2 unsigned short, unsigned short int 0 ~ 65,535 __int32 4 signed, signed int 및 int –2,147,483,648 ~ 2,147,48..
-
python _map()Python study/문법공부 2021. 11. 3. 23:48
map은 리스트의 요소를 지정된 함수로 처리해주는 함수입니다. list (map(함수, 리스트)) tuple(map(함수, 튜플)) 예를 들어 실수가 저장된 리스트가 있을 때 이 리스트의 모든 요소를 정수로 변환하려면 어떻게 해야 할까? 먼저 for 반복문을 사용해서 변환 해 보겠다. for 에 range (len(a))를 사용해서 인덱스를 가져왔다. 그리고 가져온 인덱스로 요소 하나하나에 접근한뒤 int로 변환. 이때 map을 사용하면 편하다. 사실 map 에는 리스트 뿐만 아니라 모든 반복 가능한 객체를 넣을수 있다. input().split()과 map 사실 map 이 반환하는 맵 객체는 이터레이터 라서 변수 여러 개에 저장하는 언패킹이 가능하다. 그래서 a , b = map (int , input..
-
그리디 알고리즘Python study/알고리즘 2021. 11. 3. 22:42
그리디 (Greedy) 알고리즘은 단순하지만 강력한 문제 해결 방법이다. '현재 상황에서 지금 당장 좋은 것 만 고르는 방법' 을 의미한다. 그리디 알고리즘 유형의 문제는 창의력, 즉 문제를 풀기위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. 거스름 돈 알고리즘 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원 100원 50원 10원 짜리의 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원 일때 거슬러 줘야할 동전의 최소 개수를 구하라 단, 거슬러줘야할 돈 N은 항상 10의 배수이다. KEY WORD : 거스름돈 , 500원 , 100원 , 50원 10원 , 거슬러 줘야할 돈 N은 항상 10의 배수이다. HIDDEN KEYWORD : 동전의..
-
할당 연산자Python study/문법공부 2021. 11. 1. 23:08
할당 연산자 (Assignement Operators): a = 10, b = 20 이라 가정한다 OperatorDescriptionExample = 왼쪽 변수에 오른쪽 값을 할당한다 c = a + b → c = a + b += 왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽변수에 할당 c += a → c = c + a -= 왼쪽 변수에서 오른쪽 값을 빼고 결과를 왼쪽변수에 할당 c -= a → c = c - a *= 왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽변수에 할당 c *= a → c = c * a /= 왼쪽 변수에서 오른쪽 값을 나누고 결과를 왼쪽변수에 할당 c /= a → c = c / a %= 왼쪽 변수에서 오른쪽 값을 나눈 나머지의 결과를 왼쪽변수에 할당 c %= a → c = c % a **..
-
for문 구조에 대한 고민Python study/실전프로젝트 2021. 8. 23. 14:45
def ReadExcel(self,filelist): try: datalist = [] alldata = [] for i in filelist: wb = openpyxl.load_workbook(i) sheet = wb["Test Case"] for row_data in sheet.iter_rows(min_row=2): for cell in row_data: data = cell.value datalist.append(data) alldata.append(datalist) openpyxl 을 이용하여 다수의 파일의 엑셀 데이터를 가져오는 함수입니다. 굵은 처리 한 부분이 문제가 되는 부분인데요 결과 데이터를 넘겨줄때 [(한열),(한열)] 의 형태로 넘겨 주고 싶습니다. 현제는 for문 구조상 [(파일 내..
-
openpyxl - 엑셀을 다루기 위한 패키지.Python study/실전프로젝트 2021. 8. 20. 16:56
파이선에서 엑셀을 다루기 위한 패키지들은 많이 있다. xlwt , OpenPyXL, XlsxWriter, PyExceleate 등이 있는데 그 중 가장 많이 쓰이는 것이 XlsxWriter 와 OpenPyXL이다. XlsxWriter 는 엑셀의 많은 기능을 지원하고 있음에도 불구하고 커다란 단점이 하나 있다. 바로 기존에 저장해둔 엑셀 파일을 불러 들이지 못한다는것 (=fileload 불가) OpenPyXL 충실하게 엑셀기능을 지원하면서도 이러한 단점이 없어서 많이 쓰이고 있다. openpyxl 설치 pip install openpyxl 워크북 생성 모든 데이터 읽어오기 import openpyxl as xl wb = xl.load_workbook('C:/Project/steel/faq.xlsx') fo..