Lássunk erre néhány egyszerű példát.
-----------------------
Sorsolások ismétlése ciklussal
import random
for i in range(10):
szamok = sorted(random.sample(range(1, 36), 7))
print(f'{i+1}. sorsolás: {szamok}')
-----------------------------------
Sorsolás eredményének kiértékelése
import random
# $ cd /tmp && cat > lotto.py << 'EOF' import random...
# 7 szám bekérése a felhasználótól
print("Adj meg 7 különböző számot 1 és 35 között!")
tippek = [1,2,3,4,5,6,7]
while len(tippek) < 7:
try:
szam = int(input(f"{len(tippek)+1}. szám: "))
if szam < 1 or szam > 35:
print(" Hiba: a szám 1 és 35 között legyen!")
elif szam in tippek:
print(" Hiba: ezt a számot már megadtad!")
else:
tippek.append(szam)
except ValueError:
print(" Hiba: csak egész számot adhatsz meg!")
tippek_set = set(tippek)
print(f"\nA tippjeid: {sorted(tippek)}\n")
print("=" * 50)
# Statisztika a találatokhoz
talalat_statisztika = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0
# 10 sorsolás
for i in range(10):
szamok = sorted(random.sample(range(1, 36), 7))
talalatok = tippek_set & set(szamok)
talalat_szam = len(talalatok)
talalat_statisztika[talalat_szam] += 1
osszes_talalat += talalat_szam
if talalat_szam > legjobb_talalat:
legjobb_talalat = talalat_szam
legjobb_sorsolas = i + 1
print(f"{i+1:2d}. sorsolás: {szamok} | Találatok: {talalat_szam} db {sorted(talalatok) if talalatok else ''}")
# Eredmény összegzése
print("=" * 50)
print("\n VÉGEREDMÉNY ".center(50, "="))
print(f"Tippjeid: {sorted(tippek)}")
print(f"Összes találat: {osszes_talalat} db (10 sorsolás alatt)")
print(f"Átlagos találat: {osszes_talalat / 10:.2f} szám/sorsolás")
print(f"Legjobb sorsolás: {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in talalat_statisztika.items():
if db > 0:
print(f" {talalat} találat: {db} sorsolás {'★' * db}")
--------------------
Kivételkezelés
import random
def lotto(p, t=7, m=1, ma=35):
a = [num for num in range(m, ma + 1) if num not in p]
if len(a) < t:
raise ValueError
se = random.sample(a, t)
se.sort()
return se
pr = [ ]
szam = lotto(pr)
print(szam)
for i in range(10):
szamok = lotto()
print(f"{i+1}. sorsolás: {szamok}")
---------------
Kizárjuk az előző 2 húzás számait
import random
def szamok_bekerese(darab, min_ert, max_ert, mit, kizart_halmaz=None):
"""Bekér 'darab' különböző számot a megadott tartományban.
A kizart_halmaz-ban szereplő számokat nem fogadja el (ütközés-vizsgálat)."""
if kizart_halmaz is None:
kizart_halmaz = set()
eredmeny = []
while len(eredmeny) < darab:
try:
szam = int(input(f" {len(eredmeny)+1}. {mit}: "))
if szam < min_ert or szam > max_ert:
print(f" Hiba: {min_ert} és {max_ert} között legyen!")
elif szam in eredmeny:
print(" Hiba: ezt a számot már megadtad!")
elif szam in kizart_halmaz:
print(" Hiba: ez a szám szerepel a tippjeid között, nem zárhatod ki!")
else:
eredmeny.append(szam)
except ValueError:
print(" Hiba: csak egész számot adhatsz meg!")
return eredmeny
# 1) 7 tipp bekérése
print("=" * 60)
print("Adj meg 7 TIPPET (1-35 között):")
tippek = szamok_bekerese(7, 1, 35, "tipp")
tippek_set = set(tippek)
# 2) 8 kizárt szám bekérése (ezek nem lehetnek a tippek között)
print("\nAdj meg 8 KIZÁRT számot (1-35 között, a tippjeid nem lehetnek köztük):")
kizart = szamok_bekerese(8, 1, 35, "kizárt szám", kizart_halmaz=tippek_set)
kizart_set = set(kizart)
# 3) Sorsolható számkészlet
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]
print("\n" + "=" * 60)
print(f"Tippjeid: {sorted(tippek)}")
print(f"Kizárt számok: {sorted(kizart)} (nem kerülnek kihúzásra)")
print(f"Sorsolható számok: {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et)")
print("=" * 60)
# 4) 10 sorsolás + összehasonlítás
talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0
for i in range(10):
szamok = sorted(random.sample(sorsolhato, 7))
talalatok = tippek_set & set(szamok)
talalat_szam = len(talalatok)
talalat_statisztika[talalat_szam] += 1
osszes_talalat += talalat_szam
if talalat_szam > legjobb_talalat:
legjobb_talalat = talalat_szam
legjobb_sorsolas = i + 1
talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")
# 5) Végeredmény
print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid: {sorted(tippek)}")
print(f"Kizárt számok: {sorted(kizart)}")
print(f"Összes találat: {osszes_talalat} db (10 sorsolás alatt)")
print(f"Átlagos találat: {osszes_talalat / 10:.2f} szám/sorsolás")
print(f"Legjobb sorsolás: {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
if db > 0:
print(f" {talalat} találat: {db} sorsolás {'*' * db}")
--------------------------------
80 sorsolás kell ahhoz hogy 5 találat legyen
Meg is adhatjuk az értékeket a programban
python
import random
# ============================================================
# ITT ÁLLÍTSD BE A SAJÁT SZÁMAIDAT
# ============================================================
TIPPEK = [5, 12, 18, 23, 27, 31, 34] # 7 tipped (1-35)
KIZART = [1, 2, 3, 4, 6, 7, 8, 9] # 8 kizárt szám (1-35)
SORSOLASOK_SZAMA = 10
# ============================================================
# Egyszerű ellenőrzés
assert len(TIPPEK) == 7, "7 tippet kell megadni!"
assert len(KIZART) == 8, "8 kizárt számot kell megadni!"
assert all(1 <= n <= 35 for n in TIPPEK + KIZART), "Minden szám 1-35 között legyen!"
assert len(set(TIPPEK)) == 7, "A tippek nem ismétlődhetnek!"
assert len(set(KIZART)) == 8, "A kizárt számok nem ismétlődhetnek!"
assert not (set(TIPPEK) & set(KIZART)), "A tippek és a kizárt számok nem fedhetik egymást!"
tippek_set = set(TIPPEK)
kizart_set = set(KIZART)
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]
print("=" * 60)
print(f"Tippjeid: {sorted(TIPPEK)}")
print(f"Kizárt számok: {sorted(KIZART)} (nem kerülnek kihúzásra)")
print(f"Sorsolható számok: {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et, {SORSOLASOK_SZAMA} alkalommal)")
print("=" * 60)
talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0
for i in range(SORSOLASOK_SZAMA):
szamok = sorted(random.sample(sorsolhato, 7))
talalatok = tippek_set & set(szamok)
talalat_szam = len(talalatok)
talalat_statisztika[talalat_szam] += 1
osszes_talalat += talalat_szam
if talalat_szam > legjobb_talalat:
legjobb_talalat = talalat_szam
legjobb_sorsolas = i + 1
talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")
print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid: {sorted(TIPPEK)}")
print(f"Kizárt számok: {sorted(KIZART)}")
print(f"Összes találat: {osszes_talalat} db ({SORSOLASOK_SZAMA} sorsolás alatt)")
print(f"Átlagos találat: {osszes_talalat / SORSOLASOK_SZAMA:.2f} szám/sorsolás")
print(f"Legjobb sorsolás: {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
if db > 0:
print(f" {talalat} találat: {db} sorsolás {'*' * db}")
---------------------------------------
import random
# ============================================================
# ITT ÁLLÍTSD BE A SAJÁT SZÁMAIDAT
# ============================================================
TIPPEK = [5, 12, 18, 23, 27, 31, 34] # 7 tipped (1-35)
KIZART = [1,2,4,8,9,11,13,15,17,22,25,26,21,28,29,30,32,35] # 18 kizárt szám (1-35)
SORSOLASOK_SZAMA = 100
# ============================================================
# Egyszerű ellenőrzés
assert len(TIPPEK) == 7, "7 tippet kell megadni!"
assert len(KIZART) == 18, "8 kizárt számot kell megadni!"
assert all(1 <= n <= 35 for n in TIPPEK + KIZART), "Minden szám 1-35 között legyen!"
assert len(set(TIPPEK)) == 7, "A tippek nem ismétlődhetnek!"
assert len(set(KIZART)) == 18, "A kizárt számok nem ismétlődhetnek!"
assert not (set(TIPPEK) & set(KIZART)), "A tippek és a kizárt számok nem fedhetik egymást!"
tippek_set = set(TIPPEK)
kizart_set = set(KIZART)
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]
print("=" * 60)
print(f"Tippjeid: {sorted(TIPPEK)}")
print(f"Kizárt számok: {sorted(KIZART)} (nem kerülnek kihúzásra)")
print(f"Sorsolható számok: {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et, {SORSOLASOK_SZAMA} alkalommal)")
print("=" * 60)
talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0
for i in range(SORSOLASOK_SZAMA):
szamok = sorted(random.sample(sorsolhato, 7))
talalatok = tippek_set & set(szamok)
talalat_szam = len(talalatok)
talalat_statisztika[talalat_szam] += 1
osszes_talalat += talalat_szam
if talalat_szam > legjobb_talalat:
legjobb_talalat = talalat_szam
legjobb_sorsolas = i + 1
talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")
print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid: {sorted(TIPPEK)}")
print(f"Kizárt számok: {sorted(KIZART)}")
print(f"Összes találat: {osszes_talalat} db ({SORSOLASOK_SZAMA} sorsolás alatt)")
print(f"Átlagos találat: {osszes_talalat / SORSOLASOK_SZAMA:.2f} szám/sorsolás")
print(f"Legjobb sorsolás: {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
if db > 0:
print(f" {talalat} találat: {db} sorsolás {'*' * db}")
-----------------------------
import random
# ============================================================
# ITT ÁLLÍTSD BE A SAJÁT SZÁMAIDAT
# ============================================================
TIPPEK = [5, 12, 18, 23, 27, 31, 34] # 7 tipped (1-35)
KIZART = [1,2,3,4,6,7,8,9,10,11,13,15,16,17,22,25,26,21,28,29,30,32,33,35] # 18 kizárt szám (1-35)
SORSOLASOK_SZAMA = 100
# ============================================================
# Egyszerű ellenőrzés
assert len(TIPPEK) == 7, "7 tippet kell megadni!"
assert len(KIZART) == 24, "24 kizárt számot kell megadni!"
assert all(1 <= n <= 35 for n in TIPPEK + KIZART), "Minden szám 1-35 között legyen!"
assert len(set(TIPPEK)) == 7, "A tippek nem ismétlődhetnek!"
assert len(set(KIZART)) == 24, "A kizárt számok nem ismétlődhetnek!"
assert not (set(TIPPEK) & set(KIZART)), "A tippek és a kizárt számok nem fedhetik egymást!"
tippek_set = set(TIPPEK)
kizart_set = set(KIZART)
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]
print("=" * 60)
print(f"Tippjeid: {sorted(TIPPEK)}")
print(f"Kizárt számok: {sorted(KIZART)} (nem kerülnek kihúzásra)")
print(f"Sorsolható számok: {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et, {SORSOLASOK_SZAMA} alkalommal)")
print("=" * 60)
talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0
for i in range(SORSOLASOK_SZAMA):
szamok = sorted(random.sample(sorsolhato, 7))
talalatok = tippek_set & set(szamok)
talalat_szam = len(talalatok)
talalat_statisztika[talalat_szam] += 1
osszes_talalat += talalat_szam
if talalat_szam > legjobb_talalat:
legjobb_talalat = talalat_szam
legjobb_sorsolas = i + 1
talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")
print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid: {sorted(TIPPEK)}")
print(f"Kizárt számok: {sorted(KIZART)}")
print(f"Összes találat: {osszes_talalat} db ({SORSOLASOK_SZAMA} sorsolás alatt)")
print(f"Átlagos találat: {osszes_talalat / SORSOLASOK_SZAMA:.2f} szám/sorsolás")
print(f"Legjobb sorsolás: {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
if db > 0:
print(f" {talalat} találat: {db} sorsolás {'*' * db}")
----------------
Az utolsó 4 sorsolás eredménye alapján ha 2/3-át kizárom, akkor a harmadik sorsolásnál telitalálat
20 sorsolás *3 7 találat


.jpg)












.jpg)
.jpg)
.jpg)


