Python study
-
코드에서 나는 악취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..
-
파이썬 GUI 프로그래밍 - PYQT5Python study/실전프로젝트 2021. 7. 20. 11:34
메인창(Main Window) 메인창(Main window)은 메뉴바, 툴바, 상태바를 갖는 전형적인 어플리케이션 창입니다. (QMainWindow 공식 문서 참고) 메인창은 QMenuBar, QToolBar, QDockWidget, QStatusBar를 위한 고유의 레이아웃을 갖고 있습니다. 또한 가운데 영역에 중심위젯 (Central widget)을 위한 영역을 갖고 있습니다. 여기에는 어떠한 위젯도 들어올 수 있습니다. QMainWindow 클래스를 이용해서 메인 어플리케이션 창을 만들 수 있습니다 QStatusBar 상태바는 어플리케이션의 상태를 알려주기 위해 어플리케이션의 하단에 위치하는 위젯입니다. (QStatusBar 공식 문서 참고) 상태바에 텍스트를 표시하기 위해서는 showMessage..