TOP
본문 바로가기
[파이썬 Projects]/<파이썬 웹개발>

[파이썬] Streamlit 웹 개발 - 5: 로또 번호 생성 페이지

by 기록자_Recordian 2025. 3. 18.
728x90
반응형
이전 내용
 

[파이썬] Streamlit 으로 웹 페이지 만들기 - 4

이전 내용 [파이썬] [파이썬] Streamlit으로 웹 페이지 만들기 - 3이전 내용  [파이썬] Streamlit으로 웹 페이지 만들기 - 2이전 내용 [파이썬] Streamlit 으로 웹페이지 만들기 - 1Streamlit Streamlit은 Python

puppy-foot-it.tistory.com


로또 번호를 생성하는 웹 페이지를 만들어보자

 

로또 번호를 생성하는 버튼을 클릭하면 로또를 생성해 주는 코드를 짜본다.

import streamlit as st
from random import sample
import datetime

st.title(":sparkles: 로또 생성기 :sparkles:")

# 로또 번호 생성하는 버튼
lotto_btn = st.button("로또 번호 생성하기")

# 로또 번호 생성하는 함수 만들기
def gen_lotto():    
    numbers = range(1, 46)
    times = 0
    while times < 5:
        times = times + 1
        lotto_nums = sample(numbers, 5)
        st.write(f"{times}. **행운의 번호: :orange[{lotto_nums}]**")
    
    if times == 5:
        st.write("**:grey[당첨을 기원합니다!]**")
        st.write(f"생성된 시간: **:red[{datetime.datetime.now()}]**")

if lotto_btn:
    gen_lotto()


보완1
: 구매 수량 설정

 

실제 구매 수량에 따라 번호를 생성해 주되, 구매 수량은 앞서 배웠던 number_input을 사용해 본다.

 

st.title(":sparkles: 로또 생성기 :sparkles:")

ticket_number = st.number_input(
    label="구매 장수를 선택해 주세요",
    min_value=1,
    max_value=100,
    value=5, # placeholder
    step=1
)
st.write(f"총 구매 금액: **:grey[{ticket_number*1_000:,}원]**")

# 로또 번호 생성하는 버튼
lotto_btn = st.button("로또 번호 생성하기")

# 로또 번호 생성하는 함수 만들기
def gen_lotto():    
    numbers = range(1, 46)
    times = 0
    while times < ticket_number:
        times = times + 1
        lotto_nums = sample(numbers, 5)
        st.write(f"{times}. **행운의 번호: :orange[{lotto_nums}]**")
    
    if times == ticket_number:
        st.write("**:grey[당첨을 기원합니다!]**")
        st.write(f"생성된 시간: **:red[{datetime.datetime.now().strftime('%Y.%m.%d %H:%M:%S')}]**")

if lotto_btn:
    gen_lotto()


보완2
: 로또 표시되는 색상 바꾸기

 

이번에는 각 행의 번호마다 색상이 다르게끔 기능을 추가해 본다. 이를 위해 colors 변수를 생성하여 색상들을 리스트 형태로 넣어준다. 그리고 random.choice에 해당 변수를 넣어 while 문으로 반복 시에 색상이 랜덤으로 선택되도록 하였다.

 

또한, strftime 으로 시간이 출력되는 포맷을 설정해 주었다.

import streamlit as st
from random import sample
import random
import datetime
import time

st.title(":sparkles: 로또 생성기 :sparkles:")

ticket_number = st.number_input(
    label="구매 장수를 선택해 주세요",
    min_value=1,
    max_value=100,
    value=5, # placeholder
    step=1
)
st.write(f"총 구매 금액: **:grey[{ticket_number*1_000:,}원]**")

# 로또 번호 생성하는 버튼
lotto_btn = st.button("로또 번호 생성하기")

colors = ['orange', 'blue', 'grey', 'red', 'violet']

# 로또 번호 생성하는 함수 만들기
def gen_lotto():    
    numbers = range(1, 46)
    times = 0
    while times < ticket_number:
        times = times + 1
        lotto_nums = sample(numbers, 5)
        st.write(f"{times}. **행운의 번호: :{random.choice(colors)}[{lotto_nums}]**")
    
    if times == ticket_number:
        st.write("**:grey[당첨을 기원합니다!]**")
        st.write(f"생성된 시간: **:red[{datetime.datetime.now().strftime('%Y.%m.%d %H:%M:%S')}]**")

if lotto_btn:
    gen_lotto()

 

 

 

 

 

 

 

728x90
반응형