with open("diakok.txt","r", encoding="utf-8") as fajl:
    ls = fajl.readlines()
    ls.pop(0) #Első sort ignoráljuk mivel ez csak az oszlopneveket tartalmazza.
adatok = []



# Az alábbi példában szótárban tárolom el az összes értéket, a jegyeket pedig a szótáron belül egy listába
# Mintának az első tanuló szótára az alábbi lesz:

# adatok[0] = {
#     'azonosito': 'OM112',
#     'nev': 'Nagy Anna',
#     'osztaly': '11.A',
#     'jegyek': [5, 4, 5, 5],
#     'igazolt_h': 10,
#     'igazolatlan_h': 0
# }

for elem in ls:
    sor = elem.strip().split(",") #Sor felosztása oszlopokká előre megadott , által
    # Értékek kigyűjtése egyesével
    azonosito = sor[0]
    nev = sor[1]
    oszt = sor[2]
    matek = int(sor[3])
    magyar = int(sor[4])
    informatika = int(sor[5])
    angol = int(sor[6])
    igazolt_hianyzas = int(sor[7])
    igazolatlan_hianyzas = int(sor[8])
    # Jegyek csoportosítása a későbbiekben egyszerűbb feladatmegoldáshoz
    jegyek = [matek,magyar,informatika,angol]
    # Szótárba helyezés az egyszerűbb hivatkozások miatt.
    szotar ={
        "azonosito": azonosito,
        "nev": nev,
        "osztaly": oszt,
        "jegyek": jegyek,
        "igazolt_h": igazolt_hianyzas,
        "igazolatlan_h": igazolatlan_hianyzas
    }
    adatok.append(szotar)


print("2. feladat")
# Tanulók száma meghatározható a az állomány hosszából 
print(f"Tanulók száma: {len(adatok)}")
print("3. feladat")

# Függvény, megnézi, hogy a
def bukott(jegyek):
    if 1 in jegyek:
        return True
    else: 
        return False
    
bukott_diakok = []
for diak in adatok:
    if bukott(diak["jegyek"]):
        bukott_diakok.append(f"{diak["nev"]}")


print(f"Megbukott tanulók: ")
for nev in bukott_diakok:
    print(nev)

print(f"4. feladat")


# Osztályok kigyűjtése kiemelten fontos, sima listába kigyűjtve nem ér pontot!!
osztalyok = []
for diak in adatok:
    if diak["osztaly"] not in osztalyok:
        osztalyok.append(diak["osztaly"])

bekeres41 = input("Írja be az osztályt: ")

while bekeres41 not in osztalyok:
    bekeres41 = input("Ilyen osztály nem létezik, próbáld újra! ")



# Tantárgyak definiálása
tantargyak = "matematika,magyar,informatika,angol"
bekeres42 = input("Írja be a tantárgyat: ")
while bekeres42 not in tantargyak.split(","):
    bekeres42 = input(f"Hibás tárgy! Lehetséges opciók:, ({tantargyak}): ")

# Átlagszámításhoz szükséges értékek
db = 0
osszeg = 0
# Ciklussal rászűr az osztályra és a jegyre
for diak in adatok:
    if diak["osztaly"] == bekeres41:
        if bekeres42 == "matematika":
            osszeg += diak["jegyek"][0]
            db +=1
        if bekeres42 == "magyar":
            osszeg += diak["jegyek"][1]
            db +=1
        if bekeres42 == "informatika":
            osszeg += diak["jegyek"][2]
            db +=1
        if bekeres42 == "angol":
            osszeg += diak["jegyek"][3]
            db +=1
# Másik opció, kevesebb ismétlődő parancsokkal:
# for diak in adatok:
#     if diak["osztaly"] == bekeres41:
#         # Ebben az esetben fontos, hogy a tantárgyak változót sima szövegként mentettem el, viszont  ha listaként szeretnék vele dolgozni akkor fel kell bontani
#         for i in range(len(tantargyak.split(","))):
#             if bekeres42 == tantargyak.split(",")[i]:
#                 osszeg += diak["jegyek"][i]
#                 db +=1
        

print(f"A {bekeres41} osztály {bekeres42} tárgyból az átlag: {round(osszeg/db,2)}.")

# Tanulók átlaga
atlagok = []
print(f"5. feladat")
# Név - átlagok kigyűjtése
for diak in adatok:
    atlagok.append([diak["nev"],sum(diak["jegyek"])/4])

# legnagyobb átlagú tanuló meghatározása
legnagyobb_atlag = 0
for i in range(len(atlagok)):
    if atlagok[i][1] > atlagok[legnagyobb_atlag][1]:
        legnagyobb_atlag = i
# Legnagyobb átlag meghatározása
legnagyobb_atlag_ertek = atlagok[legnagyobb_atlag][1]
print(f"A legnagyobb átlag a(z): {legnagyobb_atlag_ertek}, alábbi tanulóknak van:")
# Kiírni az összes tanulót akinek ennyi az átlaga
for diak in adatok:
    if legnagyobb_atlag_ertek == (sum(diak["jegyek"])/4):
        print(diak["nev"])


print("6. feladat")
#Fegyelmi eljárás, diákok
db = 0
for diak in adatok:
    if diak["igazolatlan_h"] >=10:
        db+=1

if db==0:
    print(f"Nincs olyan tanuló, aki fegyelmi eljárás elé néz.")
else:
    print(f"Összesen 3",end="")
    for i in range(db):
        print(f"!",end="")
    print(" diák áll fegyelmi eljárás előtt.")
    

print("7. feladat")
# Diák azonosító alapján 
bekeres7 = input("Írja be a diák azonosítót: ")
eredmeny = "nincs"
igazolatlan_orak = []
for diak in adatok:
    igazolatlan_orak.append(diak["igazolt_h"])
    if diak["azonosito"] == bekeres7:
        eredmeny = str(diak["igazolt_h"])

# Kiszűrni a kért tanulóét
igazolatlan_orak.remove(diak["igazolt_h"])
tobbiekhianyzasa = sum(igazolatlan_orak)


if eredmeny == "nincs":
    print("Ehhez az azonosítóhoz nem tartozik diák!")
else:
    print(f"A kért diáknak az igazolt hiányzásai: {eredmeny} óra.")
    print(f"Összes többi tanuló hiányzása {tobbiekhianyzasa}, ennek {round((float(eredmeny)/tobbiekhianyzasa)*100,1)}%-át teszi ki a beírt tanuló.")

