2007/06/19 14:09

로또 번호 통계 구하기 #1

허망하게 날려 먹었던 소스를 복구할 방법을 여러가지 강구했으나, 결국 몇줄 안되는 거 그냥 새로 짜기로 결심.
소스는 아래와 같다. 시간날 때 소스 코드 하이라이팅 플러그인 이라도 깔아야지 이거원...
python 으로 작성했다.



로또 번호 긁어오기 [get_num.py] (Language : python)
#!/bin/python
import sys
import re
import os

import urllib

# <td width='27' align='center'background='http://img.kbstar.com/lot/main_num_bg.gif' class='lot_number'>10</td>

# <td width='31' class='lot_number' align='center'>16</td>

# <span class='title01_est'>제 237회차</span>

class GetNumber:
    defaultLatestURL = "http://lot.kbstar.com/quics?page=A005345"
    defaultURL="http://lot.kbstar.com/quics?page=A005345&curRoundTime="
   
    def getDocument(self, url):
        f = urllib.urlopen(url)
        str = f.read()
        return str

    def grepNumber(self, str):
        "Get 6 numbers & bonus number return its list"
        # grep 6 numbers
        # print str
        num6 = re.findall(r'<td width=\'27\' align=\'center\'background=\'http://img.kbstar.com/lot/main_num_bg.gif\' class=\'lot_number\'>([0-9]+)</td>', str, re.I)
        # printnum6

        # grep bonus
        bonus = re.findall(r'<td width=\'31\' class=\'lot_number\' align=\'center\'>([0-9]+)</td>', str, re.I)
        # print bonus

        num6.append(bonus[0])
        return num6

    def repeatAll(self, start=1, end=5, baseURL=defaultURL):
        self.numList = []
       
        for no in range(start, end+1):
            getURL = baseURL + str(no)
            print "Getting %s... " % getURL
            rawStr = self.getDocument(getURL)
            self.numList.append(self.grepNumber(rawStr))

        return self.numList

    def printNumbers(self, list):
        for row in list:
           for item in row:
             print str(item),
           print

    def saveNumbers(self, list, filename="numbers.txt"):
        f = open(filename, 'w')
       
        for row in list:
           for item in row:
             f.write(str(item) + " ")
           f.write(os.linesep)

        f.close()

    def getLatest(self, url=defaultLatestURL):
        str = self.getDocument(url)

        GetNumber.latest = re.findall(r'<span class=\'title01_est\'>[^0-9]+([0-9]+)[^0-9]+</span>', str, re.I)

        return GetNumber.latest

if __name__ == '__main__':
    get_num = GetNumber()
    latest = get_num.getLatest()
    numList = get_num.repeatAll(1, int(latest[0]))
    # get_num.printNumbers(numList)
    get_num.saveNumbers(numList)




아직도 파이썬 개념이 잘 없어서, 코드가 개발새발이다. 나중에 재미로 wxWidget 라이브러리에 붙여서 간단한 클라이언트라도 만들어 봐야겠다.

실행하면 결과로 다음과 같은 텍스트 파일을 얻는다.
각 행의 처음 6개 숫자는 1등 번호이고, 마지막 뒤의 1개는 보너스 숫자이다.

2007/06/19 14:09 2007/06/19 14:09
[top]

2007/05/29 21:08

로또 번호 통계

쓸데없는 짓거리를 했다.

1회차 부터 234회차 까지의 번호들을 통계를 내 봤다. python 으로 작성했다.
코드는 나중에 올리고, 결과부터 보자.

로또 변호별 빈도수


보너스 제외
===========================================================
[ 39 count ]  37 40
[ 38 count ]  3 36
[ 37 count ]  2
[ 36 count ]  4 18 25 33
[ 35 count ]  17 35 42
[ 34 count ]  7 19 20 26 34
[ 33 count ]  14
[ 32 count ]  1 5 39 44
[ 31 count ]  10 11 30
[ 30 count ]  21 27 29 43 45
[ 29 count ]  6 13
[ 28 count ]  16 31
[ 27 count ]  8 15 23 24
[ 26 count ]  12 32
[ 25 count ]  22 41
[ 24 count ]  28
[ 21 count ]  9 38



보너스 포함
===========================================================
[ 47 count ]  1
[ 45 count ]  2 37
[ 44 count ]  35
[ 43 count ]  17
[ 42 count ]  33 4
[ 41 count ]  3 36 39 42
[ 40 count ]  14 26 7
[ 39 count ]  19 27 40 43
[ 38 count ]  18 25
[ 37 count ]  11 20 30 34 44 6
[ 36 count ]  8
[ 35 count ]  10 16 31 5
[ 34 count ]  13 21
[ 32 count ]  15 29
[ 31 count ]  45
[ 30 count ]  32
[ 29 count ]  23 24 38
[ 28 count ]  12 28
[ 27 count ]  41 9
[ 26 count ]  22

부자가 되고 싶으면 참조하시라. 혹시 알아? 이번주 당첨 번호가
37 40 3 36 2 4 가 될 수도 있자나?

2007/05/29 21:08 2007/05/29 21:08
[top]
TAG ::