파이썬 Python(20)
-
Python - Decorator 이해하기
Decorator?flask, dash 혹은 streamlit 등을 쓰다보면 함수 위에 `@` 기호를 쓸 일이 종종 있다.# flask 예시@app.route('/')def index(): pass # dash 예시@dashapp.callback( dash.Output('param_output', 'value_output'), dash.Input('param_input', 'value_input'))def make_fig(param_input): ... return output # streamlit 예시@st.cache_datadef load_file(url): pass이렇게 함수 위에 있는 `@`를 Decorator라고 한다. 이 Decorato..
2024.06.17 -
Streamlit - selectbox로 선택한 값 유지시키기
해결 방법`on_change` 파라미터에 session state에 선택한 값의 인덱스를 저장하는 함수를 넣고, 여기서 저장한 인덱스를 디폴트값으로 사용한다.import streamlit as stif "select_list" not in st.session_state: st.session_state.select_list = ["S 1", "S 2", "S 3"]if "option_list" not in st.session_state: st.session_state.option_list = ["Option 1", "Option 2"]if "selected" not in st.session_state: st.session_state.selected = 0page_option = st.rad..
2024.06.10 -
7판 4선승제에서 승리 확률 계산하는 코드 (python)
from itertools import combinations# 각 경기별 승리 확률p = [0.35, 0.60, 0.60, 0.50, 0.60, 0.55, 0.45]# 전체 경기에서 이길 확률을 계산하는 함수def win_probability(p): total_games = len(p) wins_needed = len(p) // 2 + 1 total_win_prob = dict() # 가능한 모든 조합을 생성 for combo in combinations(range(total_games), wins_needed): win_prob = 1 win_scenario = '' last_game = max(combo) + 1 ..
2024.05.08 -
python으로 제곱근(root) 계산하는 함수 구현하기
1. Newton-Raphson Method본문에서는 이 방법으로 제곱근을 구하는 함수를 작성하였고, 이 방법을 이해 해보도록 하자.먼저 결론부터 말하면 아래와 같은 점화식에 따라 값을 계산하여 제곱근을 구한다.$\sqrt{k} = x$라고 했을 때 $x_{n+1} = \frac{1}{2} \left(x_n + \frac{k}{x_n} \right)$, $x_0^2>k$ 이제 위 점화식이 어떻게 유도되었는지를 알아보도록 하자. 점화식 유도1. $\sqrt{k} = x$라고 했을 때, $x^2-k=0$라는 방정식을 세울 수 있다. 여기서 $f(x)=x^2-k$라고 하자.2. $f(x_n)>0$이 되게 하는 점 $x_n$에 대해 $(x_n, f(x_n))$의 접선의 방정식을 구해보면 아래와 같다. - $..
2024.04.26 -
이미지를 확인하면서 각 폴더로 분류하는 프로그램
이미지를 확인하면서 설정해둔 하위 폴더로 이동시키는 프로그램이다. jpg, jpeg, png, gif, webp 파일 형태를 읽으나 gif와 webp의 경우 움짤이 재생되지는 않는다. 0. 왜 필요해? 인터넷 생활을 하다보면 짤을 저장하기 마련인데, 다운로드 폴더에 마구잡이로 쌓인 이미지들을 분류하기 위해서는 특정 이미지들을 선택해서 이동시켜줘야 하는데, 해당 과정이 모바일이나 PC나 너무 힘들다. 예를 들어, - 분류할 이미지가 어떤 이미지인지 썸네일만으로는 부족한 경우 이미지를 확대해서 확인해줘야 하며 - 같은 폴더로 이동시킬 이미지들을 다중선택하다 실수로 다른 이미지를 선택하거나, 다중선택이 풀리는 경우가 있다. - 또, 중간중간 삭제를 하고 싶은 이미지도 있다. 그래서 이런 문제점을 겪지 않기 위..
2024.02.11 -
참가자 중에서 랜덤으로 뽑는 프로그램 (python)
https://github.com/woojangchang/tkinter_apps/tree/master/random_game 용도 한 달에 한 번 강제로 진행하는 모임이 있었고, 진행자는 참여자 중 누군가를 뽑아서 발표를 시켜야 했다. 그런데 진행할 때마다 "왠지" 같은 사람만 계속 발표하는 느낌이고 누군가는 단 한 번도 발표를 하지 않는 느낌이었다. 그래서 이런 프로그램이 있으면 좋겠다고 생각했다. 참가자 리스트를 미리 적어두면 그걸 자동으로 가져올 수 있도록 한 명씩 랜덤으로 뽑고, 뽑힌 사람은 리스트에서 제외 모두가 한 번씩 뽑혔다면 리셋 불참자는 리스트에서 아예 제외하여 리셋하여도 계속 제외되도록 이번 회의에만 별도로 참석한 경우 리스트에 추가 프로그램 랜덤 게임이라고 이름을 붙여보았다. 사용 방법..
2024.01.31 -
wtf python 알아두면 좋은 내용 정리
wtf python이란? What the f*ck Python?으로, python을 쓰다보면 헷갈리거나 이해되지 않는 연산자나 내장 함수들이 있다. 그런 것들을 소개하고 왜 그런 결과가 나오는지 알려주는 github 문서다. 영문: GitHub - satwikkansal/wtfpython: What the f*ck Python? 😱 한글: GitHub - buttercrab/wtfpython-ko: 놀라운 예제들을 통해서 파이썬을 탐험하고 이해해보세요! 일부는 엄청 깊게 파고들어서 찐 개발자들에겐 도움이 될 수 있으나 나 같은 데이터 분석 업무 위주로 하는 준개발자에게는 불필요한 내용도 좀 있다. 그래서 긴 wtf python 문서 중에서 나에게 필요한 내용을 정리해보았다. := 연산자 (a := 3) ..
2024.01.31 -
(DeepL용) python으로 개행 문자 처리해주기
https://github.com/woojangchang/tkinter_apps/tree/master/ctrlc 1. 왜 필요해? PDF로 된 논문들을 읽을 때, 쉽게 읽히지 않으면 번역기를 써야하는 상황이 생긴다. 그 중에서 DeepL 번역기의 성능도 괜찮고 프로그램도 편리해서 자주 사용하고 있다. 하지만 PDF 내용을 복사 붙여넣기를 하면 개행문자 때문에 제대로 번역이 되지 않는 경우가 있다. 근데 그렇다고 꼭 DeepL에만 쓸 수 있는 프로그램은 아니고, 구글이나 파파고처럼 웹 번역기에도 당연히 사용할 수 있는 매우 단순한 프로그램이다. 위 내용을 복붙하면 아래와 같이 개행이 되어 나오고 이를 번역기에 넣으면 제대로 된 번역 결과가 나오지 않는다. 제대로 된 번역 결과를 위해서는 위 개행 문자를 다..
2024.01.30 -
Python 모르고 놓치고 있는 유용한 기능
나는 몇 가지를 제외하고 매우 유용하게 사용하고 있다. 연쇄 함수 호출 list comprehension처럼 사용 가능 def foo(x:bool): print(x) def foo2(x:bool): print(not x) x = True (foo if x else foo2)(x) # True x = False (foo if x else foo2)(x) # True for - else 문 for문이 break를 타지 않고 끝나면 (전체 루프를 다 돌면) else문 실행 for i in range(5): if i > 5: break else: print('?') # ? for i in range(5): if i < 5: break else: print('?') # 함수 주석 (1) 파라미터 `:`, retu..
2024.01.30 -
객관식 문제 채점 프로그램 (python)
용도 : 시험 대비 등을 위하여 같은 문제를 여러 번 반복해서 풀어보기 위해 책 대신 다른 곳에 답을 적을 때 이 프로그램에 답을 입력, (답안 텍스트 파일을 설정 시) 채점까지 대신해준다. 기능 1. 프로그램 내 타이머가 있어 시간 제한을 둘 수 있다. 2. 답안 텍스트 파일을 통해 채점을 대신하여 합불합 여부를 알려준다. (과락인지 종합 점수 부족인지 또한 알려준다.) 3. 성적이 향상했는지 확인할 수 있도록 결과를 저장할 수 있다. 주의사항 : 답안 텍스트 파일 작성시 한 줄에 10문제씩 입력해야한다. (연습문제 한정, 모의고사는 관계 없음) 사용법 예시1 - 연습문제 더보기 연습문제 버튼을 클릭하여 문항수와 시간을 설정하고 확인을 누르면 아래와 같은 시험창이 뜬다. 띄어쓰기 없이 답을 입력한다. ..
2021.03.23