User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:fajlkezeles_hibakezeles

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:muszaki_informatika:fajlkezeles_hibakezeles [2026/02/26 18:32] – created szabomtanszek:oktatas:muszaki_informatika:fajlkezeles_hibakezeles [2026/02/27 06:25] (current) – [Gyakorló feladatok] szabom
Line 149: Line 149:
 Adott egy jegyek.txt fájl, amely soronként a következő formátumú: Adott egy jegyek.txt fájl, amely soronként a következő formátumú:
  
 +<code>
 Anna 5 4 3 Anna 5 4 3
 Bence 2 3 4 Bence 2 3 4
 Csaba 1 2 Csaba 1 2
 +</code>
   * Olvasd be a fájlt.   * Olvasd be a fájlt.
   * Számold ki minden diák átlagát.   * Számold ki minden diák átlagát.
Line 192: Line 193:
             f.write(sor + "\n")             f.write(sor + "\n")
  </sxh>       </sxh>     
-Feladat: Szógyakoriság fájlból+**Feladat:** Szógyakoriság fájlból
  
 Olvass be egy szoveg.txt fájlt. Olvass be egy szoveg.txt fájlt.
Line 225: Line 226:
  
 Adott egy bevasarlas.txt fájl: Adott egy bevasarlas.txt fájl:
 +<code>
 alma 300 alma 300
 korte 250 korte 250
 banan 400 banan 400
 +</code>
   * Olvasd be a fájlt.   * Olvasd be a fájlt.
   * Számold ki az összértéket.   * Számold ki az összértéket.
Line 330: Line 331:
     if kor < 18:     if kor < 18:
         print(nev, kor)         print(nev, kor)
 +</sxh>
 +
 +**Feladat:** 
 +Adott egy diakok.txt fájl, amely a következő formátumú:
 +<code>
 +Anna;matek=5,tori=4,info=5
 +Bence;matek=2,tori=3
 +Csaba;matek=4,info=öt
 +Dora;matek=5,tori=5,info=5
 +</code>
 +A program feladata:
 +
 +  - Olvassa be a fájlt.
 +  - Alakítsa át az adatokat dictionary formára:
 +      * <code>
 +{
 +"Anna": {"matek": 5, "tori": 4, "info": 5},
 +...
 +}
 +        </code>
 +  - Hibakezelés:
 +      * Ha a fájl nem létezik → hibaüzenet
 +      * Ha egy jegy nem szám → jelezze, de a program menjen tovább
 +  - Számolja ki minden diák átlagát.
 +  - Írja ki az eredményt eredmeny.txt fájlba.
 +  - Külön listázza a bukott diákokat (átlag < 2).
 +
 +<sxh python>
 +def fajl_beolvasas(fajlnev):
 +    diakok = {}
 +
 +    try:
 +        with open(fajlnev, "r", encoding="utf-8") as f:
 +            sorok = f.readlines()
 +    except FileNotFoundError:
 +        print("A fájl nem található!")
 +        return {}
 +
 +    for sor in sorok:
 +        sor = sor.strip()
 +
 +        if not sor:
 +            continue
 +
 +        try:
 +            nev_resz, jegy_resz = sor.split(";")
 +        except ValueError:
 +            print("Hibás sorformátum:", sor)
 +            continue
 +
 +        tantargyak = {}
 +        jegyek = jegy_resz.split(",")
 +
 +        for adat in jegyek:
 +            try:
 +                tantargy, jegy = adat.split("=")
 +                jegy = int(jegy)
 +                tantargyak[tantargy] = jegy
 +            except ValueError:
 +                print(f"Hibás jegy adat: {adat} ({nev_resz})")
 +
 +        diakok[nev_resz] = tantargyak
 +
 +    return diakok
 +
 +def atlag_szamitas(jegyek_dict):
 +    if len(jegyek_dict) == 0:
 +        return 0
 +    return sum(jegyek_dict.values()) / len(jegyek_dict)
 +
 +def eredmeny_mentes(fajlnev, diakok):
 +    with open(fajlnev, "w", encoding="utf-8") as f:
 +        for nev, jegyek in diakok.items():
 +            atlag = atlag_szamitas(jegyek)
 +            f.write(f"{nev} átlaga: {atlag:.2f}\n")
 +
 +def bukottak_listaja(diakok):
 +    bukott = []
 +
 +    for nev, jegyek in diakok.items():
 +        atlag = atlag_szamitas(jegyek)
 +        if atlag < 2:
 +            bukott.append(nev)
 +
 +    return bukott
 +
 +# -------- FŐPROGRAM --------
 +
 +diakok = fajl_beolvasas("diakok.txt")
 +
 +if diakok:
 +    eredmeny_mentes("eredmeny.txt", diakok)
 +
 +    bukott = bukottak_listaja(diakok)
 +
 +    print("Bukott diákok:")
 +    for nev in bukott:
 +        print("-", nev) 
 </sxh> </sxh>
tanszek/oktatas/muszaki_informatika/fajlkezeles_hibakezeles.1772130775.txt.gz · Last modified: 2026/02/26 18:32 by szabom