1 #Szakaszsebesség-ellenőrzés - 2022. május 16. (idegennyelvűeknek) 2 3 #---------------------------------------------------------------------------- 4 # 1. Olvassa be és tárolja el a meresek.txt állomány adatait! 5 #---------------------------------------------------------------------------- 6 meresek=[] #ez lesz a mátrixunk, ebben tároljuk az adatokat 7 8 fbe=open('meresek.txt','r') 9 10 for sor in fbe: #OXZ648 8 4 44 861 8 11 53 432 11 sor=sor.strip().split() 12 for i in range(1,len(sor)): 13 sor[i]=int(sor[i]) #jobb, ha számként kezeljük az időadatokat 14 meresek.append(sor) #['OXZ648', 8, 4, 44, 861, 8, 11, 53, 432] 15 16 fbe.close() 17 18 #---------------------------------------------------------------------------- 19 # 2. Írja ki a képernyőre, hogy hány jármű adatait rögzítették a mérés során! 20 #---------------------------------------------------------------------------- 21 print('2. feladat') 22 #minden jármű csak egyszer haladt át az ellenőrzési szakaszon 23 print(f'A mérés során {len(meresek)} jármű adatait rögzítették.') 24 25 #---------------------------------------------------------------------------- 26 # 3. Határozza meg a rendelkezésre álló adatok segítségével, hogy 9 óra előtt 27 # hány jármű haladt át a szakasz végpontján! A kapott értéket írja ki a 28 # képernyőre! 29 30 #---------------------------------------------------------------------------- 31 print('\n3. feladat') 32 #megszámlálás 33 db=0 34 for meres in meresek: 35 if meres[5]<9: #9 óra előtt (az 6. adat a "szakaszvég" órája) 36 db+=1 37 38 print(f'9 óra előtt {db} jármű haladt el a végponti mérőnél.') 39 40 #---------------------------------------------------------------------------- 41 # 4. Kérjen be a felhasználótól egy óra, perc értéket! 42 # a. Határozza meg, hogy abban a percben hány jármű haladt el a kezdő 43 # méréspontnál! Ha az adott percben nem haladt el jármű a méréspontnál, 44 # akkor a 0 értéket jelenítse meg! 45 # b. Számítsa ki a forgalomsűrűséget, amely a megadott időpontban kezdődő 46 # percben (pl.: ha a megadott óra perc 08:09 volt, akkor 47 # 08:09:00,000-08:09:59,999 között) az útszakaszon lévő járművek száma 48 # és az útszakasz hosszának hányadosa. Az értéket tizedes tört alakban 49 # jelenítse meg. 50 #---------------------------------------------------------------------------- 51 print('\n4. feladat') 52 53 #ha ragaszkodunk a minta szerinti egysoros adatbekéréshez: 54 ido=input('Adjon meg egy óra és perc értéket! ').strip().split() #pl.: 8 20 55 ora=int(ido[0]) 56 perc=int(ido[1]) 57 db=0 58 for meres in meresek: 59 #csak a kezdőpontot kell nézni 60 if meres[1]==ora and meres[2]==perc: 61 db+=1 62 63 print(f'\ta. A kezdeti méréspontnál elhaladt járművek száma: {db}') 64 65 def valto(o,p,mp,emp): #ezredmásodpercre vált 66 return o*60*60*1000+p*60*1000+mp*1000+emp 67 68 db=0 69 kezdo_ido=valto(ora,perc,0,0) 70 vege_ido=valto(ora,perc,59,999) 71 72 for meres in meresek: 73 #most nemcsak a kezdőpontot kell nézni 74 kezd=valto(meres[1],meres[2],meres[3],meres[4]) 75 vege=valto(meres[5],meres[6],meres[7],meres[8]) 76 if kezd<=vege_ido and vege>=kezdo_ido: #ezt gondoljuk végig...! 77 db+=1 78 79 print(f'\tb. A forgalomsűrűség: {db/10}') 80 81 #---------------------------------------------------------------------------- 82 # 5. Mekkora volt a legnagyobb átlagsebességgel haladó járműnek a sebessége, 83 # és hány járművet hagyott le a mért szakasz végére? Amennyiben több 84 # legnagyobb átlagsebesség érték van, akkor elég az egyiket kiírnia. 85 # Az autó rendszámát, az átlagsebességet egész számként és a lehagyott 86 # járművek számát jelenítse meg! 87 #---------------------------------------------------------------------------- 88 print('\n5. feladat') 89 print('A legnagyobb sebességgel haladó jármű') 90 #szélsőértékkeresés és megszámlálás a 6. feladatot itt érdemes megoldani 91 max_sebesseg=0 92 gyorshajto=0 #6. feladat 93 fki=open('buntetes.txt','w') #7. feladat is mehet itt, szerintem... 94 for meres in meresek: 95 kezd=valto(meres[1],meres[2],meres[3],meres[4]) #másoltam a 4. feladatból 96 vege=valto(meres[5],meres[6],meres[7],meres[8]) #akár ott is megcsinálhatnánk 97 osszido=vege-kezd #ezredmásodpercben 98 sebesseg=(10000/(osszido/1000))*3.6 #m/s, váltani kell km/h-ra 99 if sebesseg>max_sebesseg: 100 max_sebesseg=sebesseg 101 rendszam=meres[0] 102 max_kezd=kezd #ezek a lehagyottak számához kellenek 103 max_vege=vege 104 105 #--- 6. feladat ---- ha már megvan a sebesség!!! 106 if sebesseg>90: 107 gyorshajto+=1 108 109 #--- 7. feladat ---- 110 if sebesseg>104 and sebesseg<=121: #7. feladathoz 111 print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t30000 Ft',file=fki) 112 if sebesseg>121 and sebesseg<=136: 113 print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t45000 Ft',file=fki) 114 if sebesseg>136 and sebesseg<=151: 115 print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t60000 Ft',file=fki) 116 if sebesseg>151: 117 print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t200000 Ft',file=fki) 118 119 fki.close() 120 print(f'\trendszáma: {rendszam}') 121 print(f'\tátlagsebessége: {int(max_sebesseg)} km/h') 122 123 #megszamlalas 124 db=0 125 for meres in meresek: 126 if meres[0]!=rendszam: 127 kezd=valto(meres[1],meres[2],meres[3],meres[4]) 128 vege=valto(meres[5],meres[6],meres[7],meres[8]) 129 #ugyanakkor vagy előbb kezdte, de később ért ki 130 if kezd<=max_kezd and vege>max_vege: 131 db+=1 #ezeket lehagyta 132 133 print(f'\táltal lehagyott járművek száma: {db}') 134 135 #---------------------------------------------------------------------------- 136 # 6. Határozza meg, hogy a járművek hány százalékának az átlagsebessége 137 # haladta meg az útszakaszon megengedett legnagyobb sebességet (90 km/h)! 138 # Az értéket tizedes tört alakban jelenítse meg a minta szerint! 139 #---------------------------------------------------------------------------- 140 print('\n6. feladat') 141 print(f'A járművek {(gyorshajto/len(meresek))*100:.2f}%-a volt gyorshajtó.') 142 143 #---------------------------------------------------------------------------- 144 # 7. Készítsen egy szöveges állományt buntetes.txt néven, amely a gyorshajtók 145 # adatait tartalmazza! Ebbe a szöveges állományba azon járművek adatai 146 # kerüljenek be, amelyek átlagsebessége 104 km/h-nál nagyobb! A fájlban a 147 # jármű rendszáma, az átlagsebesség egész számként megjelenítve és a 148 # büntetés összege szerepeljen mértékegységgel, pontosvesszővel vagy 149 # tabulátorokkal elválasztottan! A büntetési tételeket a következő 150 # táblázat tartalmazza! 151 # 104 km/h felett 121 km/h-ig 30 000 Ft 152 # 121 km/h felett 136 km/h-ig 45 000 Ft 153 # 136 km/h felett 151 km/h-ig 60 000 Ft 154 # 151 km/h felett 200 000 Ft 155 #---------------------------------------------------------------------------- 156 #Lásd 5. feladatnál... 157 print('\nA fájl elkészült.') 158