importrequests
fromcollectionsimportdefaultdict
fromdatetimeimportdatetime
# =========================
# Skandináv lottó elemző
# =========================
#
# Feladat:
# 1. Letölti az eddigi Skandináv lottó húzásokat
# 2. Kizárja az utolsó sorsolás 14 számát
# 3. Megnézi a többi szám közül melyiket húzták ki a legrégebben
# 4. Kiválaszt 7 számot
#
# Megjegyzés:
# A program az Szerencsejáték Zrt. publikus API-ját használja.
#
URL="https://bet.szerencsejatek.hu/cmsfiles/skandinav.csv"
# CSV letöltése
response=requests.get(URL)
ifresponse.status_code!=200:
("Nem sikerült letölteni az adatokat.")
exit()
# Sorok feldolgozása
lines=response.text.strip().split("\n")
# Fejléc eltávolítása
header=lines[0]
data_lines=lines[1:]
draws=[]
forlineindata_lines:
parts=line.split(";")
try:
year=parts[0]
week=parts[1]
# A 14 kihúzott szám
numbers=list(map(int,parts[11:25]))
draws.append({
"year":int(year),
"week":int(week),
"numbers":numbers
})
except:
continue
# Legfrissebb húzás
latest_draw=draws[-1]
latest_numbers=set(latest_draw["numbers"])
("Utolsó húzás számai:")(sorted(latest_numbers))()
# Utolsó előfordulás keresése minden számra
last_seen={}
# Visszafelé haladunk az időben
forindexinrange(len(draws)-1,-1,-1):
draw=draws[index]
fornumberindraw["numbers"]:
ifnumbernotinlast_seen:
last_seen[number]=len(draws)-index
# Skandináv lottó számok: 1-35
all_numbers=set(range(1,36))
# Kizárjuk az utolsó húzás számait
remaining_numbers=all_numbers-latest_numbers
# Rangsorolás:
# minél nagyobb a "len(draws)-index",
# annál régebben volt húzva
ranking=[]
fornumberinremaining_numbers:
age=last_seen.get(number,999999)
ranking.append((number,age))
# Régebben húzott számok előre
ranking.sort(key=lambdax:x[1],reverse=True)
# 7 szám kiválasztása
selected=ranking[:7]
selected_numbers=sorted([x[0]forxinselected])
("Ajánlott 7 szám:")(selected_numbers)
("\nRészletek:")
fornumber,ageinselected:
(f"{number}->{age}húzás óta nem szerepelt")
A program működéséhez szükséges csomag:
Bash pip install requests
Nincsenek megjegyzések:
Megjegyzés küldése