cegesauto201905.py
1    ceg=[]
2    #-----------------------------------------------------------------------------
3    # 1. Olvassa be és tárolja el az autok.txt fájl tartalmát!
4    #-----------------------------------------------------------------------------
5    fbe=open('autok.txt','r')
6    for sor in fbe:
7        sor=sor.strip().split()
8        ceg.append(sor)
9    fbe.close()
10   #-----------------------------------------------------------------------------
11   # 2. Adja meg, hogy melyik autót vitték el utoljára a parkolóból! Az eredményt
12   #    a mintának megfelelően írja a képernyőre!
13   #-----------------------------------------------------------------------------
14   print('2. feladat')
15   #Vagy egy while-ciklussal...
16   i=-1
17   while ceg[i][5]!='0':
18       i-=1
19   nap=ceg[i][0]
20   rsz=ceg[i][2]
21   
22   print('%s. nap rendszám: %s' %(nap,rsz))
23   #vagy egy "megfordított" mátrix-szal for ciklussal dolgozunk
24   ceg2=ceg.copy()
25   ceg2.reverse()
26   #vagy:
27   #for adatok in ceg[::-1]:
28   for adatok in ceg2:    
29       if adatok[5]=='0':
30           nap=adatok[0]
31           rsz=adatok[2]
32           break
33   
34   print('%s. nap rendszám: %s' %(nap,rsz))
35   #-----------------------------------------------------------------------------
36   # 3. Kérjen be egy napot és írja ki a képernyőre a minta szerint, hogy mely
37   #    autókat vitték ki és hozták vissza az adott napon!
38   #-----------------------------------------------------------------------------
39   
40   print('3. feladat')
41   nap=input('Nap: ') 
42   
43   print('Forgalom a(z) %s. napon:' %nap)
44   
45   for adatok in ceg:
46       if adatok[0]==nap:
47           #feltételes értékadás, ilyenre is van lehetőség
48           ki_vagy_be='be' if adatok[5]=='0' else 'ki'
49           print(adatok[1]+' '+adatok[2]+' '+adatok[3]+' '+ki_vagy_be)
50   #-----------------------------------------------------------------------------
51   # 4. Adja meg, hogy hány autó nem volt bent a hónap végén a parkolóban!
52   #-----------------------------------------------------------------------------
53   print('4. feladat')
54   
55   #10 db autó: CEG300,CEG301,...,CEG309
56   #rsz='CEG30'+utolsó számjegy indexelheti az auto listát!!!!!!
57   autok=[0]*10
58   
59   for adatok in ceg:
60       index=int(adatok[2][-1])  #adatok[2] a rendszám, -1 utolsó számjegy indexe
61       autok[index]+=1
62   
63   db=0
64   for auto in autok:
65       if auto%2!=0:
66           db+=1
67   
68   print('A hónap végén %d autót nem hoztak vissza.' %db)
69   #-----------------------------------------------------------------------------
70   # 5. Készítsen statisztikát, és írja ki a képernyőre mind a 10 autó esetén az
71   #    ebben a hónapban megtett távolságot kilométerben! A hónap végén még kint
72   #    lévő autók esetén az utolsó rögzített kilométerállással számoljon!
73   #    A kiírásban az autók sorrendje tetszőleges lehet.
74   #-----------------------------------------------------------------------------
75   print('5.feladat')
76   
77   #a 4. feladathoz hasonlóan indexelünk
78   auto_elso=[0]*10    #10 elemű lista, mert tíz autó van
79   for adatok in ceg:
80       if auto_elso[int(adatok[2][-1])]==0:
81           auto_elso[int(adatok[2][-1])]=int(adatok[4])
82           
83   auto_utolso=[0]*10
84   for adatok in ceg2:
85       if auto_utolso[int(adatok[2][-1])]==0:
86           auto_utolso[int(adatok[2][-1])]=int(adatok[4])
87   
88   for i in range(10):
89       km=auto_utolso[i]-auto_elso[i]
90       print('CEG30'+str(i)+' '+str(km)+' km')
91   #-----------------------------------------------------------------------------
92   # 6. Határozza meg, melyik személy volt az, aki az autó egy elvitele alatt a
93   #    leghosszabb távolságot tette meg! A személy azonosítóját és a megtett
94   #    kilométert a minta szerint írja a képernyőre!
95   #    (Több legnagyobb érték esetén bármelyiket kiírhatja.)
96   #-----------------------------------------------------------------------------
97   print('6.feladat')
98   
99   ceg_rendezett=sorted(ceg,key=lambda auto: auto[2])
100  
101  max_km=0
102  
103  for i in range(1,len(ceg_rendezett)):
104      #i-1. kivitel  i. visszahozatal ugyanaz az autó ugyanaz a személy,
105      #rendezés miatt...
106      #azt még nézni kell, hogy egyáltalán visszahozták-e?
107      if ceg_rendezett[i][5]=='1':    #visszahozták
108          megtett_ut=int(ceg_rendezett[i][4])-int(ceg_rendezett[i-1][4])
109          if megtett_ut>max_km:
110              max_km=megtett_ut
111              az=ceg_rendezett[i][3]    #ez a személy azonosítója
112  
113  print('Leghosszabb út: %d km, személy: %s' %(max_km,az))
114  
115  #-----------------------------------------------------------------------------
116  # 7. Az autók esetén egy havi menetlevelet kell készíteni! Kérjen be a
117  #    felhasználótól egy rendszámot! Készítsen egy X_menetlevel.txt állományt,
118  #    amelybe elkészíti az adott rendszámú autó menetlevelét! (Az X helyére az
119  #    autó rendszáma kerüljön!) A fájlba soronként tabulátorral elválasztva a
120  #    személy azonosítóját, a kivitel időpontját (nap. óra:perc), a kilométer-
121  #    számláló állását, a visszahozatal időpontját (nap. óra:perc), és a kilo-
122  #    méterszámláló állását írja a minta szerint!
123  #    (A tabulátor karakter ASCII-kódja: 9.)
124  #-----------------------------------------------------------------------------
125  print('7.feladat')
126  
127  rendszam=input('Rendszám: ')
128  fki=open(rendszam+'_menetlevel.txt','w')
129  
130  for adatok in ceg_rendezett:
131      if adatok[2]==rendszam:
132          if adatok[5]=='0':
133              #kivitel
134              print(adatok[3]+'\t'+adatok[0].zfill(2).rjust(2)+'.\t'+adatok[1]+'\t'+adatok[4].zfill(5).rjust(5)+' km\t',end='',file=fki)
135          else:
136              #visszahozatal
137              print(adatok[0].zfill(2).rjust(2)+'.\t'+adatok[1]+'\t'+adatok[4].zfill(5).rjust(5)+' km\t',file=fki)
138  
139  fki.close()
140  print('Menetlevél kész!')
141  
142  
143  
144  
145  
146  
147  
148  
149  
150  
151  
152