class Ora:
    def __init__(self, egyora=None):
        if egyora is None:
            egyora = []
        self.nev = egyora[0]
        self.targy = egyora[1]
        self.oszt = egyora[2]
        self.ora = int(egyora[3])


class Tantargyfelosztas:
    def __init__(self, orak=None):
        if orak is None:
            orak = []
        self.orak = orak

    def orak_db(self):
        """tantagyfelosztasban szereplo orak szama"""
        return len(self.orak)

    def osszoraszam(self):
        """osszoraszam"""
        return sum(ora.ora for ora in self.orak)

    def tanar_heti_oraszam(self, nev):
        """egy tanar heti oraszama"""
        return sum(ora.ora for ora in tfel.orak if ora.nev == nev)

    def ofok(self):
        """osztalyfonokok"""
        return [(ora.oszt, ora.nev) for ora in self.orak if ora.targy == 'osztalyfonoki']

    def ofok_kiir(self):
        """osztalyfonokok kiir"""
        sz = ''
        for o, t in self.ofok():
            sz += o + ' - ' + t + '\n'
        return sz

    def tanarok_szama(self):
        """tanarok szama"""
        return len(set(ora.nev for ora in self.orak))

    def csoportbontas(self, osztaly, targy):
        """egy adott targyat egy osztalyban csoportbontasban tanuljak-e"""
        csop = [ora for ora in self.orak if (ora.targy == targy and ora.oszt == osztaly)]
        return [False, True][len(csop) == 2]


class Tanar:
    """tanar osztalya"""
    global tfel

    def __init__(self, nev):
        self.nev = nev

    def heti_oraszam(self):
        """tanar heti orszama"""
        return sum(ora.ora for ora in tfel.orak if ora.nev == self.nev)


class Fajl:
    """Fajlmuveletek osztalya"""

    def __init__(self, fnev):
        self.fnev = fnev

    def beolvas(self):
        """fajl adatainak beolvasasa"""
        f = open(self.fnev)
        i = 1
        orak = []
        egyora = []
        for sor in f.readlines():
            egyora.append(sor.strip())
            if i % 4 == 0:
                orak.append(Ora(egyora))
                egyora = []
            i += 1
        f.close()
        return orak

    def kiir(self, adatok):
        """fajlba iras"""
        f = open(self.fnev, 'w')
        print(adatok, end='', file=f)
        f.close()


# 1. feladat
fajl = Fajl('beosztas.txt')
orak = fajl.beolvas()
tfel = Tantargyfelosztas(orak)

# 2. feladat
print("2. feladat\nA fájlban", tfel.orak_db(), "bejegyzés található.")

# 3. feladat
print("3. feladat\nAz iskolában a heti összóraszám:", tfel.osszoraszam())

# 4. feladat
nev = input("4. feladat\nA tanár neve: ")
tanar = Tanar(nev)
print("4. feladat\nA tanár heti óraszáma:", tanar.heti_oraszam())
# Tanar osztállyal
print("4. feladat\nA tanár heti óraszáma:", tfel.tanar_heti_oraszam(nev))

# 5. feladat
fajl = Fajl('ofOOP.txt')
fajl.kiir(tfel.ofok_kiir())
print("5. feladat\nFájlbaírás kész.")

osztaly, tantargy = input("6.feladat\nAdja meg az osztályt: "), input("Adja meg a tantárgyat: ")
print(["Osztályszinten", "Csoportbontásban"][tfel.csoportbontas(osztaly, tantargy)], "tanulják.")

# 7. feladat
print("7. feladat\nAz iskolában", tfel.tanarok_szama(), "tanár tanít.")
