@app.route('/get_lotto_numbers')
def get_lotto_numbers():
round = request.args.get('round')
connect_to_db()
try:
with connection.cursor() as cursor:
sql = """
SELECT
ll.seq,
ll.lucky_numbers,
ll.lotto_rank,
ll.lucky_yn,
re.exclude_numbers,
re.seq AS lotto_rule_exclude_seq,
re.percent AS accuracy -- 정확도 정보를 추가
FROM lotto_lucky_numbers ll
LEFT JOIN lotto_rule_exclude_numbers re ON ll.target_lotto_round = re.target_lotto_round
WHERE ll.target_lotto_round = %s
ORDER BY
CASE ll.lotto_rank
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
WHEN 4 THEN 4
WHEN 5 THEN 5
ELSE 6
END,
ll.seq ASC
"""
cursor.execute(sql, (round,))
rows = cursor.fetchall()
seen_lucky_numbers = set()
numbers = []
for row in rows:
lucky_numbers = row[1]
if lucky_numbers not in seen_lucky_numbers:
seen_lucky_numbers.add(lucky_numbers)
numbers.append({
"seq": row[0],
"luck_numbers": lucky_numbers,
"lotto_rank": row[2],
"lucky_yn": row[3],
"exclude_numbers": row[4],
"lotto_rule_exclude_seq": row[5],
"accuracy": int(row[6]) if row[6] is not None else 0 # None을 0으로 처리
})
for number in numbers:
if number['exclude_numbers']:
number['exclude_numbers'] = f"(제외수: {number['exclude_numbers']}, 정확도: {number['accuracy']}%)"
return jsonify({"numbers": numbers})
finally:
pass
이번엔 로또 애플리케이션에 **제외수의 정확도**를 표시해주는 유용한 기능을 추가해 볼 거예요! 이 기능을 통해 이전 회차 데이터로부터 "제외수"가 얼마나 정확했는지 알 수 있어요. 그럼, 데이터베이스 테이블과 Python 코드로 기능을 구현하는 방법을 살펴볼까요?
---
#### 🏗 Step 1: 제외수 테이블 구성
제외수 데이터를 저장하기 위해 `lotto_rule_exclude_numbers`라는 테이블을 사용해요. 이 테이블에선 각 로또 회차의 제외수와 정확도에 대한 정보가 저장됩니다.
CREATE TABLE `lotto_rule_exclude_numbers` (
`seq` int NOT NULL AUTO_INCREMENT,
`target_lotto_round` int NOT NULL,
`exclude_numbers` varchar(500) NOT NULL,
`success_numbers` varchar(500) NOT NULL,
`failure_numbers` varchar(500) NOT NULL,
`percent` decimal(5,2) NOT NULL
);
- **`exclude_numbers`**: 이번 회차에서 제외하고자 하는 숫자들이 저장돼요.
- **`percent`**: 이 제외수가 과거에 얼마나 "정확"했는지를 백분율로 표시해 줍니다.
- **`success_numbers` & `failure_numbers`**: 이 정확도 퍼센트를 계산하는 데 도움이 되는 성공 및 실패 숫자를 저장할 수 있어요.
이 테이블 구성을 통해 특정 회차의 제외수와 정확도 데이터를 보다 체계적으로 관리할 수 있어요.
---
#### 🧑💻 Step 2: 정확도 표시를 위한 Python 코드
제외수와 정확도 정보를 로또 번호 목록에 표시하기 위해 `get_lotto_numbers`라는 함수를 사용해 데이터를 불러오고 포맷을 다듬어줍니다.
#### 🔍 코드 설명
- **제외수와 정확도 정보**를 `lotto_rule_exclude_numbers` 테이블에서 함께 불러옵니다.
- **정확도 변환**: Python에서 `int(row[6]) if row[6] is not None else 0`을 통해 `None` 값은 `0%`로 처리하여 누락된 값을 보완해요.
- **포맷 설정**: 마지막 단계에서 제외수를 `(정확도: X%)` 형식으로 표시합니다.
---
#### ✨ 최종 출력
이제 사용자가 특정 회차를 선택할 때 제외수와 정확도가 함께 표시됩니다:
> "제외수: 7, 15, 18, 20, 정확도: 80%"
이렇게 표시되면 제외수가 얼마나 신뢰할 만한지 시각적으로 확인하기 쉬워져요!
---
로또 애플리케이션에 이 기능을 추가하면 더욱 유용해질 거예요. 코드 작업을 즐기고, 더욱 알찬 애플리케이션을 만들어 보세요! 🥳
'파이썬으로 로또 1등 도전기' 카테고리의 다른 글
23일차) 당첨된 보너스 히스토리 제외수 추가 (0) | 2024.10.27 |
---|---|
22일차) 출현 빈도 상위 3개와 하위 3개 번호 제외수 추가 (0) | 2024.10.27 |
20일차) 전, 전전 회차의 당첨 번호를 제외 수에 추가하기 (0) | 2024.10.27 |
19일차) 최신 30회차의 로또 번호에서 출현하지 않는 숫자들을 제외 (0) | 2024.10.27 |
18일차) 일본의 천재 분석가 후나츠 사카이의 로또 전략을 파헤쳐보자! (0) | 2024.10.27 |