IT
로또 최근 회차 자동으로 알아내는 파이썬 코드
astrocker
2023. 9. 23. 23:52
반응형
로또 당첨 번호는 api를 통해서 알아낼 수 있는데, 최근 추첨 회차 정보를 스스로 찾아내는 코드를 만들어 보았다.
조회하는 기간을 api에 알려줘야 하기 때문에, 가장 최근 회차를 알아내어 다시 api에다가 변수값으로 입력하게 할 수 있다.
import requests, random, math
if __name__ == "__main__":
def findRecentLottoDraw(start):
current_draw = start
a = 1 # 반복 단계를 나타내는 변수
m = 0 # 이전 회차 기억 변수 초기값
while True:
# API 요청 URL 생성
url = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={current_draw}"
n = current_draw # 이전 회차 기억
# API 요청
response = requests.get(url)
data = response.json()
# API 응답 결과 확인
if data.get("returnValue") == "success":
# "success"인 경우, 현재 값과 current_draw + 1 회차의 결과 비교
url_next = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={current_draw + 1}"
response_next = requests.get(url_next)
data_next = response_next.json()
# current_draw + 1 회차의 결과가 "fail"이면 최근 회차로 결정
if data_next.get("returnValue") == "fail":
return current_draw
# 증가폭, 다음 회차 계산
delta = abs(current_draw - m) * 2
current_draw += delta
b = '+'
elif data.get("returnValue") == "fail":
# "fail"인 경우, 현재 값과 current_draw - 1 회차의 결과 비교
url_next = f"https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={current_draw - 1}"
response_next = requests.get(url_next)
data_next = response_next.json()
# current_draw - 1 회차의 결과가 "success"이면 최근 회차로 결정
if data_next.get("returnValue") == "success":
return current_draw-1
# 증가폭, 다음 회차 계산
delta = math.ceil(abs(current_draw - m) / 2)
current_draw -= delta
b = '-'
else:
# "success" 또는 "fail" 외의 결과인 경우, 종료
return None
a += 1 # 반복 단계 증가
m = n
print('try : ', a, ' 증감 : ', b, delta, ' 현재값 : ', current_draw)
#from lotto_find_last_round import findRecentLottoDraw
#import random
# 1부터 10000 사이의 랜덤 자연수 생성하여 초기값 변수에 저장
start = random.randint(1, 10000)
print('초기값 : ', start, '\n')
# 최근 로또 추첨 회차 찾기
recent_draw_no = findRecentLottoDraw(start)
if recent_draw_no is not None:
print(f"\n최근 로또 복권 회차: {recent_draw_no}회차")
else:
print("\n최근 로또 회차를 찾을 수 없습니다.")
요렇게 몇 번 돌려 보면 랜덤 초기값을 가지고 최근 회차를 찾아내는데, 보통 20번 내외로 시도해서 정확히 찾아 낼 수 있다.
초기값 : 7458
try : 2 증감 : - 3729 현재값 : 3729
try : 3 증감 : - 1865 현재값 : 1864
try : 4 증감 : - 933 현재값 : 931
try : 5 증감 : + 1866 현재값 : 2797
try : 6 증감 : - 933 현재값 : 1864
try : 7 증감 : - 467 현재값 : 1397
try : 8 증감 : - 234 현재값 : 1163
try : 9 증감 : - 117 현재값 : 1046
try : 10 증감 : + 234 현재값 : 1280
try : 11 증감 : - 117 현재값 : 1163
try : 12 증감 : - 59 현재값 : 1104
try : 13 증감 : - 30 현재값 : 1074
try : 14 증감 : + 60 현재값 : 1134
try : 15 증감 : - 30 현재값 : 1104
try : 16 증감 : - 15 현재값 : 1089
try : 17 증감 : - 8 현재값 : 1081
try : 18 증감 : + 16 현재값 : 1097
try : 19 증감 : - 8 현재값 : 1089
try : 20 증감 : - 4 현재값 : 1085
try : 21 증감 : + 8 현재값 : 1093
try : 22 증감 : - 4 현재값 : 1089
try : 23 증감 : - 2 현재값 : 1087
최근 로또 복권 회차: 1086회차
728x90
반응형