http://conansjh20.pythonanywhere.com/lottopage/

 

로또 당첨번호 확인

로또 당첨 번호 확인

conansjh20.pythonanywhere.com

위의 홈페이지를 만들기 위한 모든 과정을 하나하나 포스팅 하도록 하겠습니다.

1. 내 로또 번호와 당첨번호/보너스당첨번호 를 대조하여 등수를 확인합니다. 이부분은 알고리즘 전체를 한번에 쭉 내려가며 주석 부분에 각 설명을 넣었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    k = 0
    '''
    k를 선언하고 k는 내 로또 번호와 당첨 번호간 일치하는 개수를 의미합니다.
    알고리즘을 돌리기 전에는 맞추지 않았으니 0으로 시작합니다.
    '''
    for i in wn:            ## 당첨번호를 하나씩 반복합니다.
        if i in get_mynum:  ## 당첨번호가 내 로또 번호 리스트 안에 있는지 확인합니다.
            k = k + 1       ## 있다면 k에 1을 더합니다. (이부분은 "k += 1" 로 써도 됩니다.)
    '''
    여기까지 진행했으면 k가 일치하는 개수가 됩니다.
    '''
    if k == 5:              ## 일치하는 개수가 5개인 경우는 2등과 3등입니다.
        if bn in get_mynum: ## 내 로또 번호 리스트에 보너스 번호가 있는지 확인합니다.
            yield "2등"     ## 있다면 2등입니다.
        else:               ## 없다면...
            yield "3등"     ## 3등입니다.
    elif k == 6:
        yield "1등"         ## 6개가 다 맞다면 1등입니다.
    elif k == 4:
        yield "4등"         ## 4개면 4등
    elif k == 3:
        yield "5등"         ## 3개면 5등
    else:
        yield "꽝"          ## 그 외의 경우는 꽝입니다..
cs

이번에 나오는 결과 등수 역시 yield로 내보내 줍니다.

 

이제 핵심인 lotto()함수는 모두 완성했고 코드는 다음과 같습니다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import requests
from bs4 import BeautifulSoup
import re
 
def lotto(numbers):
    get_address = requests.get("https://www.dhlottery.co.kr/common.do?method=main"
    get_content = get_address.content 
    get_html = BeautifulSoup(get_content, "html.parser"
    get_time = get_html.find("strong",{"id":"lottoDrwNo"}).text
    get_date = get_html.find("span",{"id":"drwNoDate"}).text
    num_filter = re.compile('drwtNo.*'
    wn = [] 
    for get_num in get_html.find_all("span",{"id": num_filter}): 
        wn.append(get_num.get_text()) 
    bonus_num = get_html.find("span",{"id":"bnusNo"}).text 
    bn = bonus_num
    wn = list(wn)
    get_mynum = str.split(numbers)
 
    yield get_time
    yield get_date
 
    yield wn
    yield bn
    yield get_mynum
 
    k = 0
    for i in wn:
        if i in get_mynum:
            k = k + 1
 
    if k == 5:
        if bn in get_mynum:
            yield "2등"
        else:
            yield "3등"
    elif k == 6:
        yield "1등"
    elif k == 4:
        yield "4등"
    elif k == 3:
        yield "5등"
    else:
        yield "꽝"
cs

이번에는 가장 기본적인 for 구문, if 구문, if - elif - else 구문도 사용했습니다. 저는 위의 구문을 처음 작성했을 때 실제 각각의 사용법을 완전히 터득하지 않고 무작정 작성했습니다.(물론 시행착오도 많이 겪었지요.) 당장 코딩은 짜고 싶고 하지만 기본부터 천천히 배울만한 여유도 의지도 없었기 때문입니다. 분명 완벽하게 기본을 숙지하여 저 위의 구문보다 더 짧고 알아보기 쉬운 구문을 멋지게 작성할 수 도 있겠지만 실력이 안돼도 무조건 하고 싶은 코딩부터 바로 하는 것을 추천합니다.

 

파이썬에는 "Life is short, You need Python."라는 말이 있다고 합니다. 이 짧은 시간동안 언제 기본부터 충실히 배우고 있겠습니까. 그냥 무조건 전진하세요.

+ Recent posts