Coding Challenge/오늘의 코드

    html canvas로 별찍기

    html canvas로 별찍기

    백준 별찍기문제를 canvas로 그려봤습니다 https://www.acmicpc.net/problem/2448 이 문제는 재귀방식으로 세모를 그리고 위, 아래왼쪽, 아래오른쪽에 그림 그리기를 이어나가는 방식입니다. 그렇다면 재귀 깊이를 n이라고 했을때 3(n-1)번 재귀가 들어간다는걸 알 수 있습니다. 그런데 무한정 재귀를 들어 갈수는 없으니 몇번 재귀로 이러한 그림을 그릴지 input을 넣을 수 있게 inputbox를 만들어주도록 합시다. 재귀문에 넘겨줄 데이터는 삼각형의 꼭지점중 하나의 (x, y) 좌표, 한변의 길이, 몇번 재귀를 들어갈건지입니다. 우리가 그릴건 정삼각형이기 때문에 sin60, cos60과 한변의 길이를 이용하여 나머지 두 좌표도 구할수 있습니다. 아래는 전체 소스입니다

    파이썬에서 조건문을 사용하기 위한 and, or 이해하기

    파이썬에서 조건문을 사용하기 위한 and, or 이해하기

    타언어에서 &&, ||로 표현 되는 and, or 연산자에 대해서 알아보겠습니다. 연산자 우선순위는 and > or 로 되어 있지만 (곱셈, 나눗셈), (덧셈, 뺄셈)처럼 연산하는 순서가 바뀌어도 결과값은 같에 나옵니다. and, or과 비트연산자 &, | 의 다른점 and, or은 논리값을 반환, &, |은 연산의 결과를 나타냅니다. x > 5 and x 5) & (x 5 and x 5) & (x < 10)) print(4 and 10) print(4 & 10) x ..

    파이썬 문자열(str)을 이용해 변수(variable)값 출력하기

    파이썬 문자열(str)을 이용해 변수(variable)값 출력하기

    많은 초심자분들이 파이썬을 처음 시작하고 리스트와 딕셔너리를 알기전에 a_0, a_1, a_2, ... 이렇게 변수를 만들고 반복문으로 변수에 접근하려 합니다. eval 이용 eval은 문자열로 된 코드를 인터프리터를 통해 실행해주는 함수입니다. 정말 편한것 같은 함수이지만.. 만약 eval안에 실행되는 문자열이 외부에서 들여온 코드일 경우, 외부 사람이 함부로 저희가 만든 프로그램에 코드로 간섭을 할 수 있는 보안에 취약점이 존재합니다. 그렇기 때문에 최대한 지양해야된 함수임을 미리 알아두시면 좋을것 같습니다. eval의 취약점 입력 : __import__ ( 'os').system('whoami') # eval 함수의 취약점 command = input() eval(command) eval함수 사용 ..

    pyqt 창끼리 데이터 전달

    pyqt 창끼리 데이터 전달

    파이썬 pyqtSignal을 이용하여 데이터를 전달해보겠습니다. 실행 미리 보기 코드설명 class NewWindw(QtWidgets.QWidget): command = QtCore.pyqtSignal(str) QtCore.pyatSignal(str)은 str형태의 데이터를 전달하는 통로라는것을 의미합니다. 다른 자료형을 전달할때는 바꿔주면 됩니다. self.inputbox.returnPressed.connect(self.sendCommand) @QtCore.pyqtSlot() def sendCommand(self): msg = self.inputbox.text() self.command.emit(msg) self.inputbox.setText("") 데이터를 보내주는 함수입니다. command.emit..

    판다스로 여러개의 csv파일 수정하기

    판다스로 여러개의 csv파일 수정하기

    먼저 임시 파일 몇개를 만들어보자! 이처럼 number를 컬럼명으로하여 만들어 주자 나같은 경우는 tree가 이렇다 지정 폴더 아래 파일들 위치를 찾아준다 os.walk를 이용하여 files폴더 아래에 있는 모든 파일을 읽어들여 준다! endswith은 파일의 확장자를 반환한다. 튜플 형태로 여러개의 확장자를 전달 가능하다. import os path = "files\\" # os.listdir(path) 특정 폴더만 하는 경우 for root, dirs, files in os.walk(path): # 해당 폴더 아래 있는 모든 파일 탐색 for file in files: if file.endswith((".csv", ".xlsx")): # 찾는 확장자 print(os.path.join(root, fil..