ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로또 최근 회차 자동으로 알아내는 파이썬 코드
    IT 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
    반응형
Designed by Tistory.