Egy város közlekedéstervezési céllal kerékpárosforgalom-számlálót telepít az egyik főútjára. A próbaüzem reggel 6-tól 10-ig tart, amelynek során 15 percenként rögzítik a megelőző 15 percben áthaladó kerékpárosok számát. A rendszer még bizonytalan, ha technikai probléma – például áramszünet – történik a mérés során bármikor, akkor a rögzített érték abban az időintervallumban −1 lesz, különben az áthaladók száma nemnegatív egész szám. A rögzített mérési értékek száma 16, és értékük például a következő:
A mérés kezdőadatai: 6:15-kor 36, 6:30-kor 48 kerékpáros, és így tovább. 7:00-kor és 7:45-kor −1 került rögzítésre, mert az előző negyedórában mérőhiba történt a számlálórendszerben. Az utolsó adatot, 63 kerékpárost 10:00-kor jegyezték fel.
2. feladat Összesen 838 kerékpárost számoltak. 3. feladat Óránkénti mérések: 6 órától 123 kerékpáros 7 órától 149 kerékpáros 8 órától 297 kerékpáros 9 órától 269 kerékpáros 4. feladat Az áthaladók maximális száma: 82; a rögzítés időpontja: 8:30.
osszeg = 0 azt jelenti: legyen egy "osszeg" nevű fiók, amelynek értéke most 0. Később ezt felülírhatjuk, növelhetjük stb.
meresi_adatok = [36, 48, 39, -1, ...]. Az elemeket 0-tól számozzuk: az első elem a 0. helyen van, a második az 1. helyen stb. Ezt a sorszámot indexnek nevezzük. Így a mi listánkban meresi_adatok[0] = 36 (a 6:15-ös adat), meresi_adatok[9] = 82 (a 8:30-as adat).
print("Helló") → megjelenik: Helló. Az f-betűs változatban (print(f"Összesen {osszeg}...")) a kapcsos zárójelbe tett változó értékét automatikusan belehelyettesíti a szövegbe.
for i in range(4): négyszer fut le: i=0, i=1, i=2, i=3. Minden körben az i változó veszi fel a következő értéket.
if ertek != -1: azt jelenti: "csak akkor csináld, ha az érték nem -1". A != jel = "nem egyenlő".
A feladat azt kéri, hogy a 16 számot tároljuk el a program kódjában egy megfelelő adatszerkezetben. A számok rendelkezésre állnak a meres.txt fájlban — onnan egyszerűen kimásoljuk őket, és egy listát hozunk létre belőlük. Ez egyetlen sorban megoldható.
meresi_adatok = [36, 48, 39, -1, 30, 43, -1, 76, 67, 82, 73, 75, 64, 73, 69, 63]
-1) is belekerülnek a listába — a 4. és a 7. helyen (index 3 és 6). Ezeket majd a következő feladatokban szűrjük ki, nem most.
Össze kell adni az összes érvényes mérési értéket — vagyis amelyik nem −1.
Ehhez végigmegyünk a listán, és egy if feltétellel kiszűrjük a hibás adatokat.
Az összeghez az += operátorral adogatjuk hozzá az értékeket.
osszeg = 0
for ertek in meresi_adatok:
if ertek != -1: # a hibás (-1) értékeket kihagyjuk
osszeg += ertek # hozzáadjuk az összeghez
print("2. feladat")
print(f"Összesen {osszeg} kerékpárost számoltak.")
# → 2. feladat:
# → Összesen 838 kerékpárost számoltak.
ertek változó az aktuális szám: először 36, majd 48, 39, -1, 30 stb.!= jel azt jelenti: "nem egyenlő". A két hibás mérés (-1) így kimarad.+= rövidítés: osszeg = osszeg + ertek. A végén: 36+48+39+30+43+76+67+82+73+75+64+73+69+63 = 838.osszeg változó értékét a szövegbe. Kimenet: Összesen 838 kerékpárost számoltak.A 16 mérés 4 órára oszlik (6., 7., 8., 9. óra), és minden óra pontosan 4 adatot tartalmaz. Mivel a mérés a megelőző 15 percet rögzíti, a 6. óra adatai: 6:15, 6:30, 6:45, 7:00 (mind a hat és hét közötti forgalom). A listában ezek egymás után vannak: az első 4 a 6. óra, a következő 4 a 7. óra stb. Két egymásba ágyazott ciklust használunk: a külső az órákon megy végig, a belső az adott óra 4 negyedórájára.
2 × 4 + 1 = 9 → lista[9] = 82 (ez a 8:30-as adat).
A külső ciklus az órákon, a belső az adott óra 4 mérésén megy végig.
print()
print("3. feladat")
print("Óránkénti mérések:")
for i in range(4): # i = 0, 1, 2, 3 → 6., 7., 8., 9. óra
orankenti_osszeg = 0
for j in range(4): # j = 0, 1, 2, 3 → az óra 4 negyedórája
ertek = meresi_adatok[i * 4 + j] # pl. i=2, j=1 → index 9 → 82
if ertek != -1:
orankenti_osszeg += ertek
print(f"{6 + i} órától {orankenti_osszeg} kerékpáros")
# → 3. feladat:
# → Óránkénti mérések:
# → 6 órától 123 kerékpáros ...stb.
2×4+1 = 9 → lista[9] = 82.6+0=6 → "6 órától 123 kerékpáros". Ha i=2: 6+2=8 → "8 órától 297 kerékpáros".
Végigmegyünk az összes mérési értéken, és megkeressük a legnagyobbat — de nem elég tudni,
mekkora, azt is meg kell jegyezni, hogy hányadik helyen van a listában (ez az index).
Ebből a sorszámból számítjuk ki az időpontot: mivel a mérések 6:15-kor kezdődnek, az (index + 1) × 15 perc
adja meg, hány perccel vagyunk 6:00 után. Az óra és a perc szétválasztásához egészosztást
(//) és maradékot (%) használunk.
max_ertek = -1
max_index = 0
for i in range(len(meresi_adatok)):
if meresi_adatok[i] > max_ertek:
max_ertek = meresi_adatok[i]
max_index = i
# Időpont kiszámítása az indexből
# (A mérések 6:15-kor kezdődnek → index 0 = 6:15, tehát +1 kell)
percek = (max_index + 1) * 15 # index 9 → (9+1)×15 = 150 perc
ora = 6 + percek // 60 # 150 // 60 = 2 → 6 + 2 = 8
perc = percek % 60 # 150 % 60 = 30
idopont = f"{ora}:{perc:02d}" # :02d → ha perc=0, akkor "8:00" (nem "8:0")
print()
print("4. feladat")
print(f"Az áthaladók maximális száma: {max_ertek}; a rögzítés időpontja: {idopont}.")
# → 4. feladat:
# → Az áthaladók maximális száma: 82; a rögzítés időpontja: 8:30.
i változó az aktuális sorszámot (0-tól 15-ig) tartalmazza.// az egészosztás: 150 ÷ 60 = 2 teljes óra → 6 + 2 = 8. óra.% a maradék: 150 - 2×60 = 30 perc maradt → :30.:02d legalább 2 jegyet ír ki: ha perc=0, akkor 8:00 jelenik meg, nem 8:0. Eredmény: "8:30".# 1. feladat – adatok eltárolása listában
meresi_adatok = [36, 48, 39, -1, 30, 43, -1, 76, 67, 82, 73, 75, 64, 73, 69, 63]
# 2. feladat – összes kerékpáros (hibás -1 értékek kizárásával)
osszeg = 0
for ertek in meresi_adatok:
if ertek != -1:
osszeg += ertek
print("2. feladat")
print(f"Összesen {osszeg} kerékpárost számoltak.")
# 3. feladat – óránkénti bontás
print()
print("3. feladat")
print("Óránkénti mérések:")
for i in range(4):
orankenti_osszeg = 0
for j in range(4):
ertek = meresi_adatok[i * 4 + j]
if ertek != -1:
orankenti_osszeg += ertek
print(f"{6 + i} órától {orankenti_osszeg} kerékpáros")
# 4. feladat – csúcsforgalom
max_ertek = -1
max_index = 0
for i in range(len(meresi_adatok)):
if meresi_adatok[i] > max_ertek:
max_ertek = meresi_adatok[i]
max_index = i
percek = (max_index + 1) * 15
ora = 6 + percek // 60
perc = percek % 60
idopont = f"{ora}:{perc:02d}"
print()
print("4. feladat")
print(f"Az áthaladók maximális száma: {max_ertek}; a rögzítés időpontja: {idopont}.")