futar201205.py
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)