Mintaprojekt: Induló járatok
Forrásanyagok
A mintafeladathoz tartozó forrásfájlt letöltheted itt:
kotegyan.txt
A kotegyan.txt állomány Kötegyán vasútállomás induló vonatairól tartalmaz információkat. A fájl soronként egy-egy induló vonatról tartalmaz információkat - minden sorban megtalálható az indulási időpont órája, valamint perce, továbbá a járat úticélja, tabulátor karakterrel elválasztva. A fájl első néhány sora így néz ki:
4 31 Békéscsaba 5 14 Békéscsaba 5 30 Nagyszalonta 6 31 Vésztő ...
A célunk egy olyan program elkészítése, amely - az aktuális időpont felhasználásával - kiírja a következő 5 darab induló járat információit a konzolra!
Készítsük el!
import datetime # Beimportáljuk a datetime modult, hiszen szükség lesz rá az aktuális idő meghatározásához
# Ebben a listában fogjuk letárolni a rendelkezésre álló adatokat
indulasok = []
# Megnyitjuk a fájlt. A with szerkezetnek hála a fájl a beolvasás után automatikusan bezárásra kerül.
with open("kotegyan.txt", "r") as fajl:
# Egy for ciklussal végighaladnk a fájl minden során
for sor in fajl:
# A beolvasott sort szétvágjuk a tabulátor karakternél
adatok = sor.strip().split("\t")
# Ezt követően létrehozunk egy szótárat az adatok tárolására
szotar = {
"ora": int(adatok[0]),
"perc": int(adatok[1]), # Az órát és a percet int-re konvertálva tároljuk
"hova": adatok[2] # Az állomás nevét azonban szövegként tároljuk
}
# Az összeállított szótárat pedig elhelyezzük a listában.
indulasok.append(szotar)
# Lekérdezzük az aktuális időpontot
most = datetime.datetime.now()
# Meghatározzuk, hogy melyek azok a vonatok, amelyek indulási ideje már elmúlt. Ehhez egy
# ciklust használunk, amely végiglépked a vonatokon egészen addig, ameddig el nem érjük
# az utolsó olyat, amelynek az indulási ideje már elment - közben pedig ezt az információt
# egy változóban követjük.
id = 0
while id < len(indulasok) and indulasok[id]["ora"] <= most.hour and indulasok[id]["perc"] < most.minute:
id = id + 1
# Az ID változó jelenleg az első olyan vonat sorszámát tartalmazza, amelyet ki kell írnunk.
# Nincs más dolgunk, mint gondoskodni a következő 5 járat kiírásáról, amelyet ismét egy ciklus
# használatával valósítunk meg.
print("Hamarosan induló járatok Kötegyán állomásról:")
for i in range(5):
if id+i < len(indulasok):
vonat = indulasok[id + i]
print(" ", vonat["ora"], ":",vonat["perc"], "=>", vonat["hova"])
Próbáld ki magad is! Nézd át a cikkünkhöz tartozó mintakódot - szerkeszd és futtasd közvetlenül a böngésződben, az info9
LineFlame fejlesztőeszközével!