Ez a feladat az érettségin előforduló mátrix (két-dimenziós lista) és szótár (dictionary) alapú adatelemzést ötvözi. Gyakorolja a fájlbeolvasást, a halmazok (set) használatát, a komplex szűréseket és a logikai összefüggések hatékony leképzését Pythonban.A feladat: Vasúti hálózat optimalizáció
Egy vasúttársaság adatbázisát dolgozzuk fel. Az állomások közötti közvetlen járatok listája. (Formátum: Honnan;Hova;Távolság_km;Menetidő_perc) Az egyes állomásokon történt késések. (Formátum: Állomás;Késés_tartama_perc)
--------------
# Kapott adatokkal futtatható verzió
menetrend = []
kesesek = {}
# Kapott vonatadatok: honnan;hova;tavolsag;ido
vonatok_teszt = [
"Szeged;Budapest;180;90",
"Debrecen;Budapest;220;100",
"Püspökladány;Budapest;160;75",
"Miskolc;Budapest;190;110",
"Győr;Budapest;130;70",
"Pécs;Budapest;210;140",
"Kecskemét;Szeged;95;55",
"Szolnok;Püspökladány;85;50",
"Nyíregyháza;Debrecen;100;45",
"Eger;Miskolc;75;40"
]
for sor in vonatok_teszt:
adatok = sor.strip().split(';')
menetrend.append({
'honnan': adatok[0],
'hova': adatok[1],
'tavolsag': int(adatok[2]),
'ido': int(adatok[3])
})
# Kapott késésadatok: állomás;késés
kesesek_teszt = [
"Budapest;5",
"Budapest;12",
"Budapest;7",
"Szeged;15",
"Szeged;10",
"Debrecen;20",
"Debrecen;25",
"Miskolc;8",
"Miskolc;14",
"Győr;3",
"Győr;6",
"Püspökladány;30",
"Püspökladány;18",
"Pécs;11"
]
for sor in kesesek_teszt:
adatok = sor.strip().split(';')
allomas = adatok[0]
keses = int(adatok[1])
if allomas not in kesesek:
kesesek[allomas] = []
kesesek[allomas].append(keses)
# A) 120 km/h-nál gyorsabb járatok száma
gyors_jaratok_szama = 0
for ut in menetrend:
sebesseg = ut['tavolsag'] / (ut['ido'] / 60)
if sebesseg > 120:
gyors_jaratok_szama += 1
print(f"A 120 km/h-nál gyorsabb járatok száma: {gyors_jaratok_szama}")
# B) Legnagyobb átlagos késés
legnagyobb_atlag = -1
legrosszabb_allomas = ""
for allomas, keses_lista in kesesek.items():
atlag = sum(keses_lista) / len(keses_lista)
if atlag > legnagyobb_atlag:
legnagyobb_atlag = atlag
legrosszabb_allomas = allomas
print(f"A legnagyobb átlagos késés ({legnagyobb_atlag:.1f} perc) itt történt: {legrosszabb_allomas}")
# C) Közvetlen járatok Budapestre, Püspökladány érintése nélkül
cel_allomasok = set()
for ut in menetrend:
if ut['hova'] == 'Budapest' and ut['honnan'] != 'Püspökladány':
cel_allomasok.add(ut['honnan'])
print("Közvetlen járatok Budapestre (Püspökladány érintése nélkül):")
for indulo in sorted(cel_allomasok):
print(f"- {indulo}")
-----------------
A 120 km/h-nál gyorsabb járatok száma: 3
A legnagyobb átlagos késés (24.0 perc) itt történt: Püspökladány
Közvetlen járatok Budapestre (Püspökladány érintése nélkül):
- Debrecen
- Győr
- Miskolc
- Pécs
- Szeged
----------
Futtatás; https://onecompiler.com/python#draft-tdxd
Nincsenek megjegyzések:
Megjegyzés küldése