ellenorzes202205idny.py
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