1 # ----------------------------------------------------------------------------------- 2 # 1. Olvassa be a tavok.txt állományban talált adatokat, s annak felhasználásával 3 # oldja meg a következő feladatokat! 4 # ----------------------------------------------------------------------------------- 5 6 print('1. feladat: Fájlbeolvasás') 7 mátrix = [] 8 for i in range(7): # mátrixfeltöltő ciklus: 40 elemű listák, 0 értékkel a mátrix sorai 9 sor = [0] * 40 10 mátrix.append(sor) 11 12 for sor in open('tavok.txt', 'r'): 13 sor = sor.strip().split() # fájl egy sorának beolvasása és listává alakítása: [nap,fuvar,km] 14 nap = int(sor[0]) - 1 # 0.eleme: nap, 1.eleme: fuvarszám, 3.eleme: megtett km 15 fuvar = int(sor[1]) - 1 # -1 az indexelések miatt 16 km = int(sor[2]) 17 mátrix[nap][fuvar] = km 18 19 # ----------------------------------------------------------------------------------- 20 # 2. Írja ki a képernyőre, hogy mekkora volt a hét legelső útja kilométerben! 21 # Figyeljen arra, hogy olyan állomány esetén is helyes értéket adjon, amiben 22 # például a hét első napján a futár nem dolgozott! 23 # ----------------------------------------------------------------------------------- 24 25 print('2. feladat:') 26 elso = 0 27 for i in range(7): 28 if mátrix[i][0] != 0: # Ha egy napon nem dolgozott, akkor ott 0 érték van 29 elso = mátrix[i][0] # az első helyen, azaz a 0. indexnél 30 break 31 print('\tAz első út hossza', elso, 'km.') 32 33 # ----------------------------------------------------------------------------------- 34 # 3. Írja ki a képernyőre, hogy mekkora volt a hét utolsó útja kilométerben! 35 # ----------------------------------------------------------------------------------- 36 37 print('3. feladat:') 38 utolso = 0 39 40 for i in range(6, -1, -1): # visszafelé haladunk a napokban 41 x = mátrix[i].count(0) # megszámoljuk az adott napnál a nullákat 42 if x != 40: # ha nem mind az, akkor dolgozott azon a napon 43 utolso = mátrix[i][40 - x - 1] # utolsó nem nulla bejegyzés indexe: 40-x-1 44 break 45 print('\tAz utolsó út hossza', utolso, 'km.') 46 47 # ----------------------------------------------------------------------------------- 48 # 4. Tudjuk, hogy a futár minden héten tart legalább egy szabadnapot. 49 # Írja ki a képernyőre, hogy a hét hányadik napjain nem dolgozott a futár! 50 # ----------------------------------------------------------------------------------- 51 52 print('4. feladat:') 53 szabad = [] # szabadnapok listája 54 for i in range(7): 55 if mátrix[i].count(0) == 40: # ha a mátrix egy sor csupa nulla maradt, akkor 56 szabad.append(i + 1) # ott nem dolgozott (i+1 a "normál" napszámozás miatt!) 57 for i in range(len(szabad)): 58 print('\t%d. napon nem dolgozott' % szabad[i]) 59 60 # ----------------------------------------------------------------------------------- 61 # 5. Írja ki a képernyőre, hogy a hét melyik napján volt a legtöbb fuvar! 62 # Amennyiben több nap is azonos, maximális számú fuvar volt, elegendő 63 # ezek egyikét kiírnia. 64 # ----------------------------------------------------------------------------------- 65 66 print('5. feladat:') 67 fuvar = [] # minden napra megszámoljuk a fuvarokat 68 for i in range(7): 69 x = 40 - mátrix[i].count(0) # nem nullákat számoljuk 70 fuvar.append(x) # eredmény megy a fuvar listába 71 maxi = max(fuvar) # maximum kiválasztása 72 73 # maximumhoz tartozó index: fuvar.index(maxi) 74 print('\tLegtöbb fuvar (', maxi, ') napja: ', fuvar.index(maxi) + 1) 75 76 # ----------------------------------------------------------------------------------- 77 # 6. Számítsa ki és írja a képernyőre a mintának megfelelően, hogy az egyes 78 # napokon hány kilométert kellett tekerni! 79 # ----------------------------------------------------------------------------------- 80 81 print('6. feladat:') 82 nap = 1 83 for elem in mátrix: # a mátrix egy eleme egy lista, numerikus értékekkel 84 print('\t%d. nap: %d km' % (nap, sum(elem))) # ezeket összegezzük: sum() függvény 85 nap += 1 86 87 # ----------------------------------------------------------------------------------- 88 # 7. A futár az egyes utakra az út hosszától függően kap fizetést az alábbi 89 # táblázatnak megfelelően: 90 # 1 – 2 km 500 Ft 91 # 3 – 5 km 700 Ft 92 # 6 – 10 km 900 Ft 93 # 11 – 20 km 1400 Ft 94 # 21 – 30 km 2000 Ft 95 # Kérjen be a felhasználótól egy tetszőleges távolságot, és határozza meg, 96 # hogy mekkora díjazás jár érte! Ezt írja a képernyőre! 97 # ----------------------------------------------------------------------------------- 98 99 print('7. feladat') 100 101 def fizetés(távolság): # készítünk egy függvényt a fenti táblázat szerint 102 if távolság > 0 and távolság < 3: 103 return 500 104 if távolság > 2 and távolság < 6: 105 return 700 106 if távolság > 5 and távolság < 11: 107 return 900 108 if távolság > 10 and távolság < 21: 109 return 1400 110 if távolság > 20 and távolság < 31: 111 return 2000 112 113 # itt alkalmazzuk a függvényünket 114 fizet = fizetés(int(input('\tKérek egy távolságot (km): '))) 115 print('\tEzért a távolságért jár: ', fizet, ' Ft') 116 117 # ----------------------------------------------------------------------------------- 118 # 8. Határozza meg az összes rögzített út ellenértékét! Ezeket az értékeket írja ki 119 # a dijazas.txt állományba nap szerint, azon belül pedig az út sorszáma szerinti 120 # növekvő sorrendben az alábbi formátumban: 121 # 1. nap 1. út: 700 Ft 122 # 1. nap 2. út: 900 Ft 123 # 1. nap 3. út: 2000 Ft 124 # … 125 # ----------------------------------------------------------------------------------- 126 127 print('8. feladat') 128 összeg = 0 # ez a 9. feladathoz kell 129 fv = open('dijazas.txt', 'w') 130 for nap in range(7): # mátrix minden elemét vizsgáljuk 131 for fuvar in range(40): 132 if mátrix[nap][fuvar] != 0: # ha nem nulla az adott mátrixelem, akkor... 133 fizet = fizetés(mátrix[nap][fuvar]) # fizetés() függvény alkalmazása 134 print('\t', nap + 1, '. nap ', fuvar + 1, '. fuvar: ', fizet, ' Ft') 135 összeg += fizetés(mátrix[nap][fuvar]) 136 # összegezzük a keresetet a 9. feladathoz 137 fv.write(str(nap + 1) + '. nap ' + str(fuvar + 1) + '. fuvar: ' + str(fizet) + ' Ft\n') 138 fv.close() 139 140 # ----------------------------------------------------------------------------------- 141 # 9. Határozza meg, és írja ki a képernyőre, hogy a futár mekkora összeget 142 # kap a heti munkájáért! 143 # ----------------------------------------------------------------------------------- 144 print('9. feladat') 145 print('\tÖsszes kereset: ', összeg)