"""
2017. október: Hiányzások
@author Klemand66
"""


print("\n1. feladat\n")

betxt = open("naplo.txt")

hianyzasok=[]

for sor in betxt:    
    darsor=sor.strip().split()
    if darsor[0]=="#":
        ho, nap=int(darsor[1]), int(darsor[2])
    else:
        nev=darsor[0]+" "+darsor[1]
        hianyzas=darsor[2]
        hianyzasok.append([ho, nap, nev, hianyzas])
        
betxt.close()
print("A beolvasás és a szövegfájl lezárása sikeresen befejeződött.")



print("\n2. feladat\n")

print(f'A naplóban {len(hianyzasok)} bejegyzés van.')



print("\n3. feladat\n")

igdb, iglandb = 0, 0
for h in hianyzasok:
    igdb+=h[3].count("X")
    iglandb+=h[3].count("I")
    
print(f'Az igazolt hiányzások száma {igdb}, az igazolatlanoké {iglandb} óra.')



print("\n4. feladat\n")

def hetnapja(honap, nap):
    napnev=["vasarnap", "hetfo", "kedd", "szerda", "csutortok", "pentek", "szombat"]
    napszam=[0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 335]
    napsorszam=(napszam[honap-1]+nap)%7
    return napnev[napsorszam]

print(f'A hetnapja függvény:\n\n\
def hetnapja(honap, nap):\n\
    napnev=["vasarnap", "hetfo", "kedd", "szerda", "csutortok", "pentek", "szombat"]\n\
    napszam=[0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 335]\n\
    napsorszam=(napszam[honap-1]+nap)%7\n\
    return napnev[napsorszam]')



print("\n5. feladat\n")

hssz=int(input("Kérem a hónap sorszámát (1<= hónapsorszám <=12): "))
nssz=int(input("Kérem a nap sorszámát (1<= napsorszám <=28,30,31): "))

print(f'Azon a napon {hetnapja(hssz,nssz)} volt.\n')



print("\n6. feladat\n")

aktnap=input("Kérem a hét egy tanítási napjának a nevét ékezet nélkül: ")
aktora=int(input("Kérem egy óra sorszámát a megadott napon (1 <= sorszám <= 7): "))

akthianyzasok=list(filter(lambda h: hetnapja(h[0],h[1])==aktnap and h[3][aktora-1] in "XI" ,hianyzasok))

print(f'Ekkor összesen {len(akthianyzasok)} óra hiányzás történt.')



print("\n7. feladat\n")

tlista, hlista =[],[] # a tanulók és hiányzásaik listái

for h in hianyzasok:
    hdb=h[3].count("X")+h[3].count("I")
    if h[2] in tlista:
        aktindex=tlista.index(h[2])
        hlista[aktindex]+=hdb
    else:
        tlista.append(h[2])
        hlista.append(hdb)
        
maxh=max(hlista)        
maxindexek=list(filter(lambda i: hlista[i]==maxh ,range(len(tlista))))
maxhianyzok=list(map(lambda i: tlista[i] ,maxindexek))

print(f'A legtöbbet hiányzó tanulók: {", ".join(maxhianyzok)}')


input("\nA befejezéshez nyomd meg az ENTER billentyűt!")
