로또에 흥미가 있는 분들을 위해 파이썬의 웹 프레임워크 `Flask`를 사용해 로또 번호 관리 웹 애플리케이션을 만들어봤어요. 로또 번호를 생성하고 관리할 수 있는 이 웹 애플리케이션으로 당첨 가능성을 높여보세요! 지금부터 코드를 하나씩 알아볼게요!
---
#### 📦 필요한 라이브러리 준비
import requests
import random
from datetime import datetime, timedelta
import pymysql
from flask import Flask, render_template, request, jsonify
우리 프로젝트는 다양한 라이브러리를 활용합니다. `requests`는 로또 당첨 번호를 가져오기 위해, `random`은 번호 생성에, `datetime`은 회차 계산에, `pymysql`은 MySQL 연결을 위해 사용해요. `Flask`는 기본이죠!
---
#### 🎲 로또 번호 생성 규칙 가져오기 (get_lotto_rules_from_db)
사용자가 원하는 조건에 맞춰 로또 번호를 생성할 수 있게, 규칙 데이터를 가져옵니다. 예를 들어 특정 번호를 제외한다거나, 보너스 번호를 포함한다거나 하는 조건들이죠.
def get_lotto_rules_from_db():
connect_to_db()
try:
with connection.cursor() as cursor:
sql = "SELECT id, condition_type, order_sequence, bonus_included, lotto_round, pre_lotto_round FROM lotto_rules WHERE id = 1"
cursor.execute(sql)
result = cursor.fetchone()
if result:
lotto_rule_id, condition_type, order_sequence, bonus_included, lotto_round, pre_lotto_round = result
exclude_indices = [int(i) - 1 for i in order_sequence.split(',')]
exclude_bonus = bonus_included == 1
return lotto_rule_id, condition_type, exclude_indices, exclude_bonus, lotto_round, pre_lotto_round
finally:
pass
---
#### 💾 MySQL에 로또 번호 저장 (insert_lotto_lucky_numbers)
생성한 번호와 그 상태(예: 당첨 여부)를 MySQL에 저장해 언제든지 확인할 수 있도록 합니다.
def insert_lotto_lucky_numbers(target_lotto_round, lucky_numbers, lotto_rank, lucky_yn):
connect_to_db()
try:
with connection.cursor() as cursor:
sql = """
INSERT INTO lotto_lucky_numbers (target_lotto_round, lucky_numbers, lotto_rank, lucky_yn)
VALUES (%s, %s, %s, %s)
"""
lucky_numbers_str = ', '.join(map(str, lucky_numbers))
cursor.execute(sql, (target_lotto_round, lucky_numbers_str, lotto_rank, lucky_yn))
connection.commit()
finally:
pass
---
#### 🎯 최신 로또 회차 계산 (get_latest_draw_no)
2002년 12월 7일 첫 로또 회차 이후 매주 회차가 증가하는 것을 고려해 최신 회차를 계산합니다.
def get_latest_draw_no():
first_draw_date = datetime(2002, 12, 7)
today = datetime.today()
days_passed = (today - first_draw_date).days
draw_no = (days_passed // 7) + 1
return draw_no
---
#### 🧩 번호 생성기
제외할 번호를 지정해 놓으면, 이를 제외하고 새로운 번호를 생성할 수 있습니다. 당첨 가능성을 높일 수도 있겠죠?
def generate_lotto_numbers(excluded_numbers):
all_numbers = set(range(1, 46))
available_numbers = list(all_numbers - set(excluded_numbers))
lotto_numbers = random.sample(available_numbers, 6)
return sorted(lotto_numbers)
---
#### HTML 파일을 통한 시각적 화면 구성 (index.html)
이제 HTML을 통해 로또 번호를 쉽게 확인하고 생성할 수 있는 화면을 만들어볼까요? 각각의 기능을 버튼으로 분리해, 사용자 경험을 더 편리하게 만들었습니다.
<h1>로또 번호 관리</h1>
<button onclick="showMyLottoNumbers()">나의 로또번호</button>
<button onclick="showLottoGenerator()">로또번호 생성</button>
<button onclick="showWinningNumbers()">당첨 로또 번호</button>
이제 "나의 로또 번호" 화면에서는 내가 저장한 로또 번호를 확인하고, "로또 번호 생성" 화면에서는 번호를 생성할 수 있답니다!
---
#### 🎉 이 앱을 실행하면?
1. **로또 회차 선택**: 원하는 회차를 선택해 해당 회차의 당첨 번호를 볼 수 있습니다.
2. **번호 생성기**: 조건에 맞는 나만의 로또 번호를 생성할 수 있죠!
3. **당첨 여부 확인**: 내가 생성한 번호와 실제 당첨 번호를 비교해 보너스와 일치하는 번호는 노란색으로 표시됩니다!
---
이렇게 해서 로또 관리 애플리케이션을 완성했습니다. 앞으로 직접 만들면서 필요한 기능을 추가해 보세요!
'파이썬으로 로또 1등 도전기' 카테고리의 다른 글
17일차) 유명한 로또 번호 선택 기법들 총정리 (2) | 2024.10.27 |
---|---|
16일차) 생성한 로또번호 당첨통계 확인 기능추가 (0) | 2024.10.26 |
14일차) 로또번호 예측기능을 웹페이지로 확인하기 (0) | 2024.10.24 |
13일차) 로또룰을 적용해서 당첨 번호 만들어서 저장까지!!! (0) | 2024.10.23 |
12일차) 로또 예측 데이터베이스 구조 만들기 (0) | 2024.10.23 |