Coding (271) 현재 목록에서 글 찾기 × 썸네일형 리스트형 Coding/Python 경로때문에 개노가다 한 썰 푼다 일단 개고생한 이유를 축약해드리자면... 1. 윈도우에서는 폰트 저장 경로(C:\Windows\Fonts)에 있는 걸 갖다 쓰는 게 아니라 TTF, OTF파일이 있는 경로를 직접 입력해야 갖다 쓸 수 있음. 2. 근데 리눅스는 폰트 저장 경로(/usr/share/fonts)에서 선택해서 쓸 수 있음. 그래서 개고생했습니다. OS = platform.platform() if 'Linux' in OS: default_dir = '/home' root = tkinter.Tk() root.withdraw() font_dir = '/usr/share/fonts' font_path = filedialog.askopenfilename(parent=root, initialdir=font_dir, title='Choos.. 2022. 8. 22. 01:16 Coding/Python Wordcloud with FLASK-뼈대 대공사 (2) 워드클라우드부터 해서 진짜 얘까지 개 노가다의 연속이었음... 그래도 이거 미리 해놔서 Entrez는 입력부만 조금 수정하면 됩니다. 워드클라우드 경로 썰은 다른 포스트에서 풀어드림. 이게 길어서 한번에 캡처 못했음다. 입력부의 각 기능 1. 텍스트 입력란(샘플 텍스트도 있음): 샘플 텍스트는 현재 한글 두개(별 헤는 밤, 청포도)랑 영어 하나(미정)를 생각중이며, 버튼을 누르면 샘플 텍스트가 텍스트에리어에 입력된다. 길면 잘 뽑히긴 한데 영어는 뭘 해야 할 지 모르겠음. 아니 그렇다고 하이 잭 하이 마이크 하와유 이딴걸 할 순 없잖수. 논문 해 논문 2. 컬러맵 선택(이따 이미지 올려드림): 이건 밑에 털어드림. 3. 마스킹이미지 ㄱㄱ: 이미지 안 쓴다는 선택지는 없음. 4. 언어 선택(한국어는 kon.. 2022. 8. 22. 01:16 Coding/Python Wordcloud/RE 경로 관련 코드 수정 아니 나도 몰랐는데 파이썬으로 OS 정보를 볼 수 있더라? 근데 맥은 내가 가지고 있는 기기가 없어서 못봤음... import platform 일단 이놈을 데려온 다음 print(platform.platform()) 을 치면 자기 컴퓨터의 OS 정보를 볼 수 있다. 그래서 이걸 어떻게 수정했냐면 OS = platform.platform() if 'Linux' in OS: default_dir = '/home' font_dir = '/usr/share/fonts' else: default_dir = 'C:\\' font_dir = 'C:\\Fonts' OS 정보를 가져와서 리눅스면 기본 경로를 이렇게 하고, 아니면(윈도우면) 이렇게 해라 이렇게 했다. 위 코드는 워드클라우드고 제한효소쪽은 파일 불러오는것 .. 2022. 8. 22. 01:13 Coding/Python Wordcloud with FLASK-뼈대 대공사 일단... 현재 완성된 부분이 여긴데 어바웃 페이지만 된다. 입력받는 란은 아직 안함. 현재 구현된 기능 1) 탭 메뉴(어바웃 페이지/텍스트/엔트레즈 탭) 2) 어바웃페이지 app.py from flask import Flask, render_template from Bio import Entrez from wordcloud import WordCloud from wordcloud import STOPWORDS import matplotlib.pyplot as plot from PIL import Image import numpy as np from argparse import FileType import tkinter from tkinter import filedialog import re from k.. 2022. 8. 22. 01:12 Coding/Python 대형프로젝트 계획중 한가지 확실한 건 이건 진짜 개노가다가 맞음. 블로그를 좀 오래 전부터 보신 분들은 아시겠지만 깃헙에 유일하게 폴더로 분리된 대형 프로젝트가 두 개 있다. 첫번째가 프로젝트 제한효소, 두번째가 프로젝트 워드클라우드. 근데 이게 쌩코드가 올라와서 이걸 복사해서 수정해서 또 올려야되는데 귀찮아요... 그래서 Flask로 웹이랑 묶으려고 생각중이다. (프로젝트 제한효소는 DB로 쓰는 csv파일도 포함) 근데 또 고려할 게 생겼어...OTL 1) 코드 통합 문제 프로젝트 워드클라우드의 경우 한글/영어/Entrez 세 개의 코드가 있고, 프로젝트 제한효소에는 커터/파인더/서쳐 세 개의 코드가 있다. 프로젝트 제한효소는 세 코드가 사용 목적이 다 달라서 통합은 안되고, 한 페이지 안에서 세개를 다 띄우려면 아코디언.. 2022. 8. 22. 01:09 Coding/Python input vs sys.stdin.readline() 예에에에에전에 백준 18108번 풀이를 올렸을 때 댓글로 질문이 하나 왔었다. input()대신 sys.stdin.realine()을 쓰는 이유를 알 수 있나요? 백준에서 빠르다고 해서 쓰고 있었음... 아니 농담 아니고 진짜다. 반복문 이런거 잘못 짜면 응애 나 애기시간초과! 가 반기는데 다른데서라도 시간 줄여야져... 일단 둘 다 입력 받을 때 쓰는 게 맞다. input() #input import sys sys.stdin.readline() #sys.stdin.readline() 각각 이렇게 쓰면 된다. 근데 이렇게만 해 두면 왜 쟤가 빠른지 체감이 잘 안 올 것이다. 우리가 input()을 쓸 때는 저렇게 쓰는 것 보단 input('메시지를 입력해주세요') 이런 식으로 쓴다. 이 때, 저 안에 있.. 2022. 8. 22. 01:08 Coding/Python Python으로 JSON파일 읽기 JSON은 JavaScript Object Notation을 줄인 것으로, 보통 제이슨으로 읽는다. 일반적으로 클라이언트가 서버에서 가져오는 데이터는 이 형식이고, 현재 표준 형식으로 많이 쓰이고 있다. 원류는 자바스크립트지만 현재는 언어 독립적인 개별 포맷. 그러니까 누가 제이슨 파일 주세요 하면 JSON파일 달라는거지 제이슨씨 파일 주세요가 아니다 남의 파일을 왜 달라고 해 키-값 쌍으로 이루어진 데이터를 텍스트 형태로 기록해둔 것이라 휴먼 가독성은 좋다. 오늘의 도우미 { "Water": { "molecular weight": "18.016", "molecular formula": "H2O" }, "Ethanol": { "molecular weight": "46.07", "molecular fo.. 2022. 8. 22. 01:06 Coding/Python 재귀함수가 돌아가는 방식을 알아보자 재귀함수는 정의할 때 자기자신을 재참조한다고 했는데, 정의하는데 자기자신이 들어가면 대체 어떻게 돌아가는지 알아보자. 라이츄가 라이츄를 꺼내고 그 라이츄가 라이츄를 꺼내고 팩토리얼 def factorial(n): if n == 0: return 1 return n * factorial(n-1) 5!을 저걸로 계산하게 되면 1. factorial(5) = 5 * factorial(4) 2. factorial(4) = 4 * factorial(3) 3. factorial(3) = 3 * factorial(2) 4. factorial(2) = 2 * factorial(1) 5. factorial(1) = 1 * factorial(0) 6. factorial(0) = 1 7. 오케이 가릿 여기까지 왔더니 fac.. 2022. 8. 22. 01:02 Coding/Python 감마 함수+팩토리얼 코드에서 유리수 처리 아, 정확히는 정수가 아닌 유리수 말하는거다. 감마 함수? 일단 팩토리얼(n!)이 n부터 1까지 쫘라락 곱한다는것과 정수가 아닌 유리수는 그걸 감마 함수에 때려박아야 한다는 걸 대충 알고 계실 것이다. 감마함수는 팩토리얼의 상위호환으로, 대충 이런 식을 쓴다. 사실 식이 네 갠데 일반적으로 알려진 게 저 적분식인거고, 그나마 저 형태가 이해하기 쉽다. 나머지는 뭐 파이(원주율 말고 곱의 기호 파이) 뜨고 난리났음. 코드 from sympy import * from mpmath import mp import sys a = complex(sys.stdin.readline()) # 복소수는 complex로 입력해야 합니다. (int: 정수, float: 소수라고 생각하면 됨) t = symbols("t") e.. 2022. 8. 22. 00:59 Coding/Python 이중계승 추가 일단 이중계승이 뭐냐... 우리가 알고있는 팩토리얼은 n! = n*(n-1)*(n-2) 이런 식으로 곱하는거기때문에 종착점이 무조건 1이다. 근데 이중 계승은 곱하는 숫자의 공차가 2이기 때문에 입력한 숫자가 홀수냐 짝수냐에 따라 종착점이 갈린다. 홀수의 경우 종착점이 1이고, 짝수의 경우 종착점이 2가 된다. 그래서 6!!=6*4*2=48, 5!!=5*3*1=15가 된다. (그냥 계승은 6!이 720 5!이 120) import sys a = float(sys.stdin.readline()) factorial = 1 if a < 0: print("Can't calculate factorial") elif a == 0 or a == 1: print(factorial) # 0! = 1 elif a % 1 .. 2022. 8. 22. 00:56 Coding/Python 팩토리얼 로직 또 수정 이건 또 언제 떠올랐냐면 밥 사러 편의점 가다가 떠오름... ㅋㅋㅋㅋㅋㅋㅋㅋ 아니 농담 아니고 진짜로 그래요 뜬금없이 샐러드 고르고 계산하다가 아 근데 자연수 아닌거 어캄? 이러고 떠오름 들어가기 전에... 팩토리얼이 되는 범위가 어디까지인가에 대해 설명을 좀 하자면... 팩토리얼(n!)은 n부터 1까지 쫙 곱하는 그게 맞는데, 0!은 0이 아니라 1이고(...) 음수에 대해서는 정의가 안 되어 있다. 그리고 정수가 아닌 유리수(즉 q/p꼴로 나타내는 수 중 p가 1이 아닌 것...아니 음수도 아냐 치워)에 대해서는 일반적으로 고등학교 과정에서 배우는 팩토리얼이 아니라 감마 함수를 써서 계산한다. 그러니까 저기다 때려박으면 된다. 수기로 하지 말고 알파신 부르자. (울프램알파도 저거 해준다) 감마(n)은.. 2022. 8. 22. 00:55 Coding/Python 팩토리얼 로직 수정+계승 소수 Factorial 로직 수정 재밌는 사실을 하나 알려주자면 출근길에 지하철에서 멍때리다 생각난거임... 6호선 생각보다 자리 없어요 여러분. 팩토리얼(n!) 그니까 계승이 1부터 n까지 쭉 곱하는거인 건 맞다. 맞는데 문제가 두 가지 있다. 첫째, 0! = 1이다. (0 아님) 둘째, 음수는 팩토리얼이 없다. (정수가 아닌 유리수는 감마함수 때려박으면 된다나...) 그래서 이 두 가지 케이스에 대한 처리를 해야 한다. import sys a = int(sys.stdin.readline()) # Factorial(계승): 일반적으로 n! = 1*2*3*...*n-1*n이다. (5!=1*2*3*4*5) factorial = 1 if a < 0: print("Can't calculate factorial") .. 2022. 8. 22. 00:53 이전 1 ··· 14 15 16 17 18 19 20 ··· 23 다음