1 def beolvasas(fajlnev):2 with open(fajlnev, encoding='utf-8') as f:3 sorok = [sor.strip().split(';') for sor in f]4 adatok = [5 {6 'ev': int(s[0]),7 'negyedev': int(s[1]),8 'eredet': s[2],9 'leiras': s[3],10 'peldanyszam': int(s[4])11 }12 for s in sorok13 ]14 return adatok15 16 17 def szerzo_keres(adatok):18 print("2. feladat:")19 szerzo = input("Szerző: ")20 db = sum(1 for adat in adatok if szerzo in adat['leiras'])21 if db == 0:22 print("Nem adtak ki")23 else:24 print(f"{db} könyvkiadás")25 26 27 def legnagyobb_peldanyszam(adatok):28 print("3. feladat:")29 max_peldany = max(adat['peldanyszam'] for adat in adatok)30 db = sum(1 for adat in adatok if adat['peldanyszam'] == max_peldany)31 print(f"Legnagyobb példányszám: {max_peldany}, előfordult {db} alkalommal")32 33 34 def elso_40000_kulfoldi(adatok):35 print("4. feladat:")36 for adat in adatok:37 if adat['eredet'] == 'kf' and adat['peldanyszam'] >= 40000:38 print(f"{adat['ev']}/{adat['negyedev']}. {adat['leiras']}")39 break40 41 42 def statisztika(adatok):43 print("5. feladat:")44 stat = {}45 for adat in adatok:46 ev = adat['ev']47 if ev not in stat:48 stat[ev] = {'ma': {'db': 0, 'osszeg': 0}, 'kf': {'db': 0, 'osszeg': 0}}49 stat[ev][adat['eredet']]['db'] += 150 stat[ev][adat['eredet']]['osszeg'] += adat['peldanyszam']51 52 print("Év\tMagyar kiadás\tMagyar példányszám\tKülföldi kiadás\tKülföldi példányszám")53 for ev in sorted(stat):54 sor = stat[ev]55 print(f"{ev}\t{str(sor['ma']['db']).rjust(5)}\t\t{str(sor['ma']['osszeg']).rjust(10)}\t\t{str(sor['kf']['db']).rjust(5)}\t\t{str(sor['kf']['osszeg']).rjust(10)}")56 57 with open("tabla.html", "w", encoding="utf-8") as f:58 f.write("<table>\n")59 f.write("<tr><th>Év</th><th>Magyar kiadás</th><th>Magyar példányszám</th><th>Külföldi kiadás</th><th>Külföldi példányszám</th></tr>\n")60 for ev in sorted(stat):61 sor = stat[ev]62 f.write(f"<tr><td>{ev}</td><td>{sor['ma']['db']}</td><td>{sor['ma']['osszeg']}</td><td>{sor['kf']['db']}</td><td>{sor['kf']['osszeg']}</td></tr>\n")63 f.write("</table>\n")64 65 66 def ujra_kiadott(adatok):67 print("6. feladat:")68 print("Legalább kétszer, nagyobb példányszámban újra kiadott könyvek:")69 konyvek = {}70 for adat in adatok:71 leiras = adat['leiras']72 if leiras not in konyvek:73 konyvek[leiras] = []74 konyvek[leiras].append(adat['peldanyszam'])75 76 for leiras, peldanyok in konyvek.items():77 # peldanyok.sort()78 elso = peldanyok[0]79 nagyobbak = [p for p in peldanyok[1:] if p > elso]80 if len(nagyobbak) >= 2:81 print(leiras)82 83 84 def main():85 adatok = beolvasas("kiadas.txt") # vagy "kiadas2.txt"86 szerzo_keres(adatok)87 legnagyobb_peldanyszam(adatok)88 elso_40000_kulfoldi(adatok)89 statisztika(adatok)90 ujra_kiadott(adatok)91 92 93 if __name__ == "__main__":94 main()