1 def feladat(f): 2 print(f) 3 4 # ---------------------------------------------------------- 5 # 1. Olvassa be és tárolja el a naplo.txt fájl tartalmát! 6 # ---------------------------------------------------------- 7 feladat('1. feladat - naplo.txt fájl beolvasása') 8 9 fv = open('naplo.txt', 'r') 10 11 adatok = [] # ez lesz a "mátrix" 12 adat = [] # ez a lista lesz a mátrix egy eleme 13 14 for sor in fv: 15 sor = sor.split() 16 if sor[0] == '#': 17 eleje = (sor[1], sor[2]) # hónap, nap 18 else: 19 # a "mátrixba" kerül a hónap,nap mellé a név, és hiányzás 20 adat.append(eleje[0]) # hónap 21 adat.append(eleje[1]) # nap 22 adat.append(sor[0] + ' ' + sor[1]) # teljes név 23 adat.append(sor[2]) # hiányzások 24 25 adatok.append(adat) # adat lista adatok listába 26 adat = [] 27 28 fv.close() 29 30 # ---------------------------------------------------------------- 31 # 2. Határozza meg és írassa ki, hogy hány sor van a fájlban, ami 32 # hiányzást rögzít! (A fenti példában 3 ilyen bejegyzés van.) 33 # ---------------------------------------------------------------- 34 feladat('2. feladat - beolvasott hiányzások száma') 35 print('A naplóban %d bejegyzés van.' % len(adatok)) 36 37 # ---------------------------------------------------------------- 38 # 3. Számolja meg és írassa ki, hogy összesen hány óra igazolt 39 # és hány óra igazolatlan hiányzás volt a félév során! 40 # ---------------------------------------------------------------- 41 feladat('3. feladat - igazolt, igazolatlan összesen') 42 43 igazolt = 0 44 igazolatlan = 0 45 46 for adat in adatok: 47 igazolt += adat[3].count('X') 48 igazolatlan += adat[3].count('I') 49 50 kiir = 'Az igazolt hiányzások száma %d, az igazolatlanoké %d óra.' 51 print(kiir % (igazolt, igazolatlan)) 52 53 # ----------------------------------------------------------------------- 54 # 4. Készítsen függvényt hetnapja néven, amely a paraméterként megadott 55 # dátumhoz (hónap, nap) megadja, hogy az a hét melyik napjára esik 56 # (hétfő, kedd…). Tudjuk, hogy az adott év nem volt szökőév, továbbá 57 # azt is, hogy január elseje hétfőre esett. Használhatja az alábbi 58 # algoritmust is, ahol a tömbök indexelése 0-val kezdődik, de ettől 59 # eltérő megoldású függvényt is készíthet. 60 # Függvény hetnapja(honap:egesz, nap:egesz): szöveg 61 # napnev[]:=("vasarnap","hetfo","kedd","szerda","csutortok", 62 # "pentek","szombat") 63 # napszam[]:= (0,31,59,90,120,151,181,212,243,273,304,335) 64 # napsorszam:= (napszam[honap-1]+nap) MOD 7 65 # hetnapja:=napnev[napsorszam] 66 # Függvény vége 67 # ---------------------------------------------------------------------- 68 def hetnapja(honap, nap): 69 napev = [’vasarnap’, ’hetfo’, ’kedd’, ’szerda’, ’csutortok’, ’pentek’, ’szombat’] 70 napszam = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 335] 71 napsorszam = (napszam[honap - 1] + nap) % 7 72 73 return napnev[napsorszam] 74 75 # ---------------------------------------------------------------------- 76 # 5. Kérjen be egy dátumot (hónap, nap), és a hetnapja függvény 77 # felhasználásával írassa ki, hogy az a hét melyik napjára esett! 78 # ---------------------------------------------------------------------- 79 feladat('5. feladat - adott hónap, nap milyen napra esik') 80 81 honap = int(input('A hónap sorszáma=')) 82 nap = int(input('A nap sorszáma=')) 83 84 hetnapja(honap, nap) 85 print('Azon a napon {} volt.'.format(hetnapja(honap, nap))) 86 87 # ---------------------------------------------------------------------- 88 # 6. Kérje be a hét egy tanítási napjának nevét és egy aznapi tanítási 89 # óra óraszámát (például: kedd 3)! Írassa ki a képernyőre, hogy a 90 # félév során az adott tanítási órára összesen hány hiányzás jutott! 91 # ---------------------------------------------------------------------- 92 feladat('6. feladat - Adott napra, órára eső hiányzások száma') 93 94 vizsgalando_nap = input('A nap neve=') 95 ora = int(input('Az óra sorszáma=')) 96 # egyszerű feltételes összegzési algoritmus 97 hianyzas = 0 98 for adat in adatok: 99 honap = int(adat[0]) 100 nap = int(adat[1]) 101 if vizsgalando_nap == hetnapja(honap, nap): 102 if adat[3][ora - 1] == 'X' or adat[3][ora - 1] == 'I': 103 hianyzas += 1 104 105 print('Ekkor összesen %d óra hiányzás történt.' % hianyzas) 106 107 # ---------------------------------------------------------------------- 108 # 7. Írassa ki a képernyőre a legtöbb órát hiányzó tanuló nevét! 109 # Ha több ilyen tanuló is van, akkor valamennyi neve jelenjen meg 110 # szóközzel elválasztva! 111 # ---------------------------------------------------------------------- 112 feladat('7. feladat - Legtöbbet hiányzó tanulók') 113 114 nevek = set() # a neveket egy halmazban gyűjtjük... 115 116 for adat in adatok: 117 nevek.add(adat[2]) # ...így minden név csak egyszer fog szerepelni 118 119 statisztika = [] 120 for nev in nevek: # végig megyünk a neveken 121 hianyzas = 0 # egy adott névhez összegzünk 122 for adat in adatok: # végig megyünk az összes adaton, és... 123 if nev == adat[2]: # ha az éppen feldolgozandó név "jön", akkor... 124 hianyzas += adat[3].count('X') # összegezzük a hiányzásokat 125 hianyzas += adat[3].count('I') 126 statisztika.append((hianyzas, nev)) # a listába kerül a hiányzás, név kettős 127 128 statisztika = sorted(statisztika, reverse=True) # rendezzük csökkenőbe 129 print('A legtöbbet hiányzó tanulók:', end=' ') 130 maxi = statisztika[0][0] # a legnagyobb van elől 131 i = 0 132 while statisztika[i][0] == maxi: # addig írjuk a neveket, amíg max hiányzás van 133 print(statisztika[i][1], end=' ') 134 i += 1 135 print('\n') 136 137