Kollektív Skandináv lottó számok variációja.

 Nem a lottózást akarom népszerűsíteni, hanem a Python programozást. 

Bár ez nem grafikus program de érdemes tanulmányozni a kódot. Mindenki talál benne érdekességet. Tovább fejleszthető, például egy ellenőrző metódussal, ami kiértékeli a húzott számokat.

# A Skandináv lottószámok variációja.
# A 35 szám kevert számsorainak az írása olvasása.
from itertools import islice
import random
import json


class SkandiVariaciok:
"""
Az összes Skandináv lottószám kevert csoportjainak
a készítője. Összesen hét csoportot készít.
Mentés jsonl fájlba és a fájl beolvasási lehetősége.
"""

def __init__(self):
# A 35 darab szám készítése.
self.LottoSzamok = [i for i in range(1, 36)]

self.Folista = []
self.szotar = {}
self.csoport = []
self.kulcsok = [
'csoport1',
'csoport2',
'csoport3',
'csoport4',
'csoport5',
'csoport6',
'csoport7'
]

def iteracios_fuggveny(self):
"""
Skandináv lottóra tervezve. számlista = 1-35 számok.
A megkevert 35 elemű számlistát felbontja 5x7 eleműre.
Számokat nagyság szerint rendezi majd a csoportosítja.
Egy csoportban öt szelvény, egy szelvényen hét szám.
"""
# A 35 szám keverése
random.shuffle(self.LottoSzamok)

# Iterálható objektum készítés
lista_iterator_objektum = iter(self.LottoSzamok)

# Elkészíti a 2D számlistát.
for i in lista_iterator_objektum:
# Egy darab számlista készítés,
# méret = ha ez 7, akkor héttagu.
# Egy darab lottószelvény lista.
lista = [i] + list(islice(lista_iterator_objektum, 7 - 1))

# Számok sorbarendezése a szelvényeken
lista.sort()

# A szelvénylisták mentése csoportlistába
# öt darab lottószelvény = egy csoport
self.csoport.append(lista)

return self.csoport

def tobb_csoport(self):
# A hét darab csoport kulcsai.
# 1 csoport = 5 lotto x 7 szám = 35 szám.

for kulcs in self.kulcsok:
# print(f'{kulcs=}')

# csoportok elkészítése
self.csoport = self.iteracios_fuggveny()
# print(f'{self.csoport=}')

# Csoportok a szótár értékei, values.
# a "self.kulcsok" a szótár kulcsai, key.
self.szotar[kulcs] = self.csoport
# print(f'{self.szotar}')

# Minden szótár a "self.Folista"-hoz adva.
self.Folista.append(self.szotar)

# A tárolók kiürítése.
self.csoport = []
self.szotar = {}

# Főlista a szótárakkal,
# szótárak a kulcsokkal,
# hozzá az értékek 2D listával.
# A 2D listában öt lottó szelvény elem,
# egy lottó lista elem, hét számmal.
# print(f'{self.Folista=}')
return self.Folista

def iras_jsonl(self):
# Írás JSON Lines fájlba, fájlnev.jsonl
with open('save/folista2.jsonl', 'w', encoding='utf-8') as file:

# A főlista szótárak kinyerése
for entry in self.Folista:
# json formátum készítés
json_line = json.dumps(entry)

# Írás fájlba soronként, szótáranként.
file.write(json_line + '\n')

@ staticmethod
def olvasas_jsonl():
# Olvasás JSON Lines fájlból, fajlnév.jsonl
with open('save/folista2.jsonl', 'r', encoding='utf-8') as file:
for line in file:
# A szótár sorok beolvasása
data_entry = json.loads(line)

# A szótár kulcsok
kulcsok = data_entry.keys()
print(list(kulcsok)[0])

# A szótár értékek kinyerése
ertekek = data_entry.values()

ertekek_lista = list(ertekek)
# print(f'{ertekek_lista=}')

# Egy zárójel eltüntetés, majd a
# szelvények kinyomtatása a csoportokból.
for i in ertekek_lista[0]:
print(i)
print()


if __name__ == '__main__':
# példányosítás
lotto = SkandiVariaciok()

# csoportok készítése
# lotto.tobb_csoport()

# Csoportok írása fájlba
# lotto.iras_jsonl()

# A fájl kiolvasása
lotto.olvasas_jsonl()




Nincsenek megjegyzések:

Megjegyzés küldése