Python Loto

Igre na srecu su uvek bile popularne. Razvijani su bezbrojni sistemi u nadi da se povecaju sanse za dobitak. Sa pojavom kompjutera ovo je podignuto na visi nivo. Jos od vremena 8-bit kompjutera, svi znacajniji casopisi su objavljivali kratke programe na ovu temu. Naravno da niko nije ocekivao da postane milioner preko noci. Ideja je pre svega bila da se vezba pisanje koda, kao i da se nauci nesto novo. U tom smislu treba shvatiti i program koji je pred vama.

Opis: Ovaj kratki program predstavlja demonstraciju optimalizovanog koda u Python jeziku. Tema je standardni loto sistem 7/39. Sastoji se od tri rutine: loto() – daje najcesce izvlacene brojeve, lotos() – daje najredje izvlacene brojeve i lotox() – daje random brojeve u zadatom okviru. Mozete ga koristiti kako god zelite uz CC-BY uslove.

Setup: Napravite folder ‘Loto’ i u njemu fajlove loto.py i loto.txt. Zatim u loto.py iskopirajte kod programa. Fajl loto.txt sadrzi statistiku izvlacenja. Format je: sedam brojeva razdvojenih spaceom, zatim novi red i novih sedam brojeva itd. To u praksi izgleda ovako:

5 8 22 26 31 33 37
2 8 9 12 23 34 38
4 11 26 27 31 32 35
3 9 21 30 32 35 39

.. itd. Naravno ovo je samo primer, vi ga zamenite svojim brojevima.

Kod:

#Loto bY W|nDu [CC-BY/Pv2]

#LotoMax
def loto():
    bla = []; dat = {}
    c = 'LotoMax Nums: '
    a = open('loto.txt')

    for n in a:
        bla.append(n.split())

    bla = sum(bla,[])

    for m in bla:
        dat[m] = dat.get(m,0) + 1

    x1 = sorted(dat.items(), key = lambda x:x[1], reverse = True)

    x2 = [n[0] for n in x1]
    x2 = x2[:7]; x2.sort(key=int)
    
    for m in x2:
        c += m + ', '

    print c[:-2]

#LotoMin
def lotos():
    bla = []; dat = {}
    c = 'LotoMin Nums: '
    a = open('loto.txt')

    for n in a:
        bla.append(n.split())

    bla = sum(bla,[])

    for m in bla:
        dat[m] = dat.get(m,0) + 1

    x1 = sorted(dat.items(), key = lambda x:x[1])

    x2 = [n[0] for n in x1]
    x2 = x2[:7]; x2.sort(key=int)
    
    for m in x2:
        c += m + ', '

    print c[:-2]

#LotoRnd
def lotox():
    import random
    c = 'LotoRnd Nums: '

    bla = random.sample(range(1,40), 7)
    bla.sort()

    for n in bla:
        c += str(n) + ', '

    print c[:-2]

#EOF

Upotreba:

– Desni klik na loto.py > Edit with IDLE. Zatim u Idle: Run > Run Module. Otvorice se Python shell.

– Komande u shellu:
loto() – daje brojeve koji su najvise puta bili izvlaceni.
lotos() – daje brojeve koji su najmanje puta bili izvlaceni.
lotox() – daje 7 random brojeva u rasponu od 1 do 39.

Fajl loto.txt je neophodan za prve dve funkcije. Trecu mozete koristiti i bez njega.

Napomena: Program je napisan u Pythonu v2. Ako zelite da radi u Pv3, bila bi zanimljiva vezba da ga prevedete koristeci Google i ove smernice.

Srecno za programiranjem i pametno sa igrama na srecu. :)

Posted on 2015/09/20, in Open Source & Freeware, Programski jezici, Python, Tutorijali. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: