Annak vizsgálata, hogy a sorsolt számok első száma, hogyan alakult. Hányszor volt első helyen az 1-es szám? Melyik az az első szám a hétből ami a legnagyobb értékű?
Egy húzási számsorban hogyan oszlanak el a páros és a páratlan számok. A hét darab számban mi volt többször, a páros vagy a páratlan?
from collections import Counter
class OsszesHuzas:
def __init__(self):
# Ebben a fájlban vannak a mindenkori Skandináv húzott számai.
# 14 szám egy sorban, 7 gépi és 7 kézi húzás.
self.FILENAME = 'utolso14.csv'
# Az összes húzás tárolója 7 elemű 2D lista
self.het_elemu_listak = []
@staticmethod
def ketfele(lista):
"""A 14 elemű számlistát két hét eleműre bontja"""
kozep_index = len(lista) // 2
return lista[:kozep_index], lista[kozep_index:]
@staticmethod
def elemzes(filename):
"""Beolvassa a fájl sorait és integer számlistává alakítja"""
with open(filename) as adatok:
for sor in map(str.strip, adatok):
yield list(map(int, sor.rstrip(',').split(',')))
def vegrehajt(self):
""" for ciklusban beolvassa a fájl sorait.
Az elemzes() és a ketfele() függvény hívása.
:return: osszes_huzas 2D lista
"""
for line in self.elemzes(self.FILENAME):
elso, masik = self.ketfele(line)
self.het_elemu_listak.append(elso)
self.het_elemu_listak.append(masik)
return self.het_elemu_listak
class Statisztika(OsszesHuzas):
def __init__(self):
super().__init__()
# Az OsszesHuzas() osztály metódusa
self.osszes_huzas = self.vegrehajt()
# Ide jonnek a különböző statisztikai adatokat készítő metódusok.
def elso_szamok(self):
"""Milyen számmal kezdődnek a húzasok?
Ezt vizsgálja a metódus."""
elsok_lista = []
huzasok = self.osszes_huzas
for szam in huzasok:
elsok_lista.append(szam[0])
elsok_szotarban = Counter(elsok_lista)
return elsok_szotarban
@staticmethod
def szetvalagatas(het_elemu_lista):
paros_szamok = []
paratlan_szamok = []
for num in het_elemu_lista:
if num % 2 == 0:
paros_szamok.append(num)
else:
paratlan_szamok.append(num)
darab_paros_szam = len(paros_szamok)
darab_paratlan_szam = len(paratlan_szamok)
return darab_paros_szam, darab_paratlan_szam
def paros_paratlan(self):
"""Visszadja a hételemu listában lévő páros és
páratlan számok darabját."""
paros_db = []
paratlan_db = []
for het_szam_listaja in self.osszes_huzas:
paros, paratlan = self.szetvalagatas(het_szam_listaja)
paros_db.append(paros)
paratlan_db.append(paratlan)
paros_szotar = Counter(paros_db)
paros_sorban = sorted(paros_szotar.items())
paratlan_szotar = Counter(paratlan_db)
paratlan_sorban = sorted(paratlan_szotar.items())
return paros_sorban, paratlan_sorban
class App(Statisztika):
def __init__(self):
super().__init__()
# A Statisztika() osztály lista változója
teljes_huzasi_lista = self.osszes_huzas
print(f'\nAz összes gépi és kézi húzas (2025, 09, 05 ig): '
f'{len(teljes_huzasi_lista)} darab\n'
f'Néhány példa következik.......')
for i, hetszam in enumerate(teljes_huzasi_lista):
if i < 10:
print(hetszam)
else:
print('stb.......')
break
# ****************************************************************
# Statisztika() osztály metódusa,
counter_szotar = self.elso_szamok()
# Lista benne tuple-k.
kulcs_sorbarendezve = sorted(counter_szotar.items())
min_elso_kulcs = min(counter_szotar.keys())
min_elso_ertek = counter_szotar[min_elso_kulcs]
max_elso_kulcs = max(counter_szotar.keys())
max_elso_ertek = counter_szotar[max_elso_kulcs]
print(f'\nA sorsolt számok (7 db) első, legkisebb értékű vizsgálata.'
f'\nA legkisebb húzott szám: {min_elso_kulcs} -s, '
f'Összesen: {min_elso_ertek} db húzásban.')
for zarojelben in kulcs_sorbarendezve:
szazalek = round((zarojelben[1]/len(teljes_huzasi_lista))*100, 1)
print(f'{zarojelben[0]} szám, {zarojelben[1]} húzásban volt első,\t'
f'{szazalek}%')
print(f'A legnagyobb első helyezett húzott szám: {max_elso_kulcs} -s,'
f'Összesen {max_elso_ertek} db húzásban.')
# **************************************************************
print(f'\nA sorsolási számok páros és páratlan eloszlása, egy szelvényre vizsgálva.')
talalatok = self.paros_paratlan()
paros = talalatok[0]
paratlan = talalatok[1]
for tuple_ben1 in paros:
print(f'{tuple_ben1[0]} darab párosszám {tuple_ben1[1]} alkalommal,\t')
print()
for tuple_ben2 in paratlan:
print(f'{tuple_ben2[0]} darab páratlanszám {tuple_ben2[1]} alkalommal,\t')
print(f'A csupa párosszámokat tartalmazó húzás {paros[-1][1]}!, '
f'\nEz több mint a háromszorosa, a páratlan húzásokkal '
f'összehasonlítva, {paratlan[-1][1]}.')
if __name__ == '__main__':
app = App()
Letöltés:
utolso14.csv