안녕하세요, 여러분! 오늘은 파이썬을 사용하여 로또 번호를 가져오고, 특정 번호를 제외하는 방법에 대해 이야기해보겠습니다. 이 코드를 통해 로또 번호를 자동으로 가져오고, 원하는 번호를 제외하여 더욱 유용하게 활용할 수 있습니다.
## 코드 설명
### 1. 필요한 라이브러리 가져오기
우선, API 요청을 위해 `requests` 라이브러리와 날짜 계산을 위한 `datetime` 모듈을 가져옵니다.
import requests
from datetime import datetime
### 2. 최신 로또 회차 번호 구하기
로또는 매주 토요일에 진행되므로, 기준 날짜(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
### 3. 로또 당첨 번호 가져오기
로또 API를 통해 특정 회차의 당첨 번호를 가져오는 함수입니다. API를 호출하고 JSON 형식으로 데이터를 받아옵니다.
def get_lotto_winning_numbers(draw_no):
url = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={draw_no}"
response = requests.get(url)
data = response.json()
if data["returnValue"] == "success":
winning_numbers = [data[f"drwtNo{i}"] for i in range(1, 7)]
bonus_number = data["bnusNo"]
return winning_numbers, bonus_number
else:
return None, None
### 4. 제외할 번호 구하기
특정 회차의 번호를 가져온 후, 사용자가 지정한 인덱스의 번호와 보너스 번호를 제외하는 함수를 만들었습니다.
def get_excluded_numbers(latest_draw_no, offset, exclude_indices, exclude_bonus):
target_draw_no = latest_draw_no - offset
target_numbers, target_bonus = get_lotto_winning_numbers(target_draw_no)
if target_numbers:
excluded_numbers = [target_numbers[i] for i in exclude_indices]
if exclude_bonus:
excluded_numbers.append(target_bonus)
return excluded_numbers, target_numbers, target_bonus
else:
return None, None, None
### 5. 코드 실행
최신 회차 번호를 구하고, 2회차 전의 번호를 가져와서 원하는 번호를 제외해 보겠습니다.
latest_draw_no = get_latest_draw_no()
print(f"오늘 날짜 기준 최신 로또 회차 번호는: {latest_draw_no}회차 입니다.")
exclude_indices = [0, 5] # 첫 번째 숫자와 여섯 번째 숫자 제외
exclude_bonus = True # 보너스 번호 제외
excluded_numbers, target_numbers, target_bonus = get_excluded_numbers(latest_draw_no, 2, exclude_indices, exclude_bonus)
if excluded_numbers:
print(f"제외할 번호: {excluded_numbers}")
print(f"{latest_draw_no - 2}회차: 당첨 번호: {target_numbers}, 보너스 번호: {target_bonus}")
else:
print(f"{latest_draw_no - 2}회차의 데이터를 불러오지 못했습니다.")
### 전체 소스
import requests
from datetime import datetime
def get_latest_draw_no():
# 로또 1회차 기준 날짜 (2002년 12월 7일)
first_draw_date = datetime(2002, 12, 7)
# 오늘 날짜
today = datetime.today()
# 첫 회차 기준으로 경과한 일 수 계산
days_passed = (today - first_draw_date).days
# 매주 토요일에 추첨 (7일에 한 번씩 진행되므로 7로 나눔)
draw_no = (days_passed // 7) + 1
return draw_no
def get_lotto_winning_numbers(draw_no):
# 공공데이터포털 로또 API URL
url = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={draw_no}"
# API로부터 데이터 가져오기
response = requests.get(url)
data = response.json()
if data["returnValue"] == "success":
# 로또 번호 출력
winning_numbers = [data[f"drwtNo{i}"] for i in range(1, 7)]
bonus_number = data["bnusNo"]
return winning_numbers, bonus_number
else:
return None, None
def get_excluded_numbers(latest_draw_no, offset, exclude_indices, exclude_bonus):
# 최신 회차 기준으로 offset 회차 전 번호 가져오기
target_draw_no = latest_draw_no - offset
target_numbers, target_bonus = get_lotto_winning_numbers(target_draw_no)
if target_numbers:
# 제외할 번호 설정
excluded_numbers = [target_numbers[i] for i in exclude_indices]
# 보너스 번호를 제외할지 여부 확인
if exclude_bonus:
excluded_numbers.append(target_bonus)
return excluded_numbers, target_numbers, target_bonus
else:
return None, None, None
# 최신 회차 번호 계산
latest_draw_no = get_latest_draw_no()
print(f"오늘 날짜 기준 최신 로또 회차 번호는: {latest_draw_no}회차 입니다.")
# 제외할 번호 인덱스 설정 (첫 번째 숫자와 여섯 번째 숫자 제외)
exclude_indices = [0, 5] # 0은 첫 번째, 5는 여섯 번째 번호
exclude_bonus = True # 보너스 번호를 제외할지 여부
excluded_numbers, target_numbers, target_bonus = get_excluded_numbers(latest_draw_no, 2, exclude_indices, exclude_bonus)
if excluded_numbers:
print(f"제외할 번호: {excluded_numbers}")
print(f"{latest_draw_no - 2}회차: 당첨 번호: {target_numbers}, 보너스 번호: {target_bonus}")
else:
print(f"{latest_draw_no - 2}회차의 데이터를 불러오지 못했습니다.")
### 실행 결과
이 코드를 실행하면 최신 회차 번호와 2회차 전의 당첨 번호, 그리고 제외할 번호 목록이 출력됩니다. 예를 들어:
오늘 날짜 기준 최신 로또 회차 번호는: 1141회차 입니다.
제외할 번호: [5, 40, 18]
1139회차: 당첨 번호: [5, 12, 15, 30, 37, 40], 보너스 번호: 18
## 마무리
이제 파이썬을 통해 로또 번호를 손쉽게 가져오고, 원하는 번호를 제외할 수 있는 방법을 알게 되었습니다. 여러분도 이 코드를 활용하여 로또 번호를 관리해 보세요! 재미있는 프로젝트가 될 것입니다.
질문이 있으면 언제든지 댓글로 남겨주세요. 감사합니다!
'파이썬으로 로또 1등 도전기' 카테고리의 다른 글
9일차) 원칙 및 예상번호 등록을 위한 MySQL DB설정 준비 (1) | 2024.10.14 |
---|---|
8일차) 특정회차 제외수 설정해서 로또번호 추출하기 (0) | 2024.10.13 |
6일차) 최신 회차부터 이전 10회까지 가져오기 (0) | 2024.10.13 |
5일차) 오늘 날짜 기준으로 최신 로또 회차 번호 알아내기 (0) | 2024.10.13 |
4일차) 로또 당첨 번호 가져오기! (공공데이터 API 활용법) (1) | 2024.10.13 |