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