class Meccs:
    """Meccs osztalya"""
    def __init__(self, fo, hg, vg, hfg, vfg, hcs, vcs):
        self.ford = int(fo)  # fordulo
        self.hgol = int(hg)  # hazai csapat szerzett golja
        self.vgol = int(vg)  # vendeg csapat szerzett golja
        self.hfelgol = int(hfg)  # hazai csapat szerzett gólja elso felido
        self.vfelgol = int(vfg)  # vendeg csapat szerzett gólja elso felido
        self.hcs = hcs  # hazai csapat neve
        self.vcs = vcs  # vendeg csapat neve
        if self.hgol > self.vgol:
            self.gyoz = self.hcs
        elif self.vgol > self.hgol:
            self.gyoz = self.vcs
        else:
            self.gyoz = None

    def __str__(self):
        return self.hcs + '-' + self.vcs + ': ' + str(self.hgol) + '-' + str(self.vgol) \
               + ' (' + str(self.hfelgol) + '-' + str(self.vfelgol) + ')'

    def megfordul(self):
        """a felideji eredmeny megfordul-e"""
        megf = False
        if self.hgol > self.vgol and self.hfelgol < self.vfelgol or \
                self.hgol < self.vgol and self.hfelgol > self.vfelgol:
            megf = True
        return megf


class Fordulo:
    """Fordulo osztalya"""
    def __init__(self, meccsek=None):
        if meccsek is None:
            meccsek = []
        self.meccsek = meccsek

    def fordulo_meccsei(self, ford):
        """egy adott fordulo merkozesei"""
        return [meccs for meccs in self.meccsek if meccs.ford == ford]

    def fordulo_meccsei_kiir(self, ford):
        """egy adott fordulo merkozesei kiirasa"""
        for meccs in self.fordulo_meccsei(ford):
            print(meccs)

    def megfordult_meccsek(self):
        """ahol a felidei allas megfordult"""
        return [meccs for meccs in self.meccsek if meccs.megfordul()]

    def megfordult_meccsek_kiir(self):
        """ahol a felidei allas megfordult kiirasa"""
        sz = ''
        for meccs in self.megfordult_meccsek():
            sz += str(meccs.ford) + '. forduló, győztes: ' + meccs.gyoz + '\n'
        return sz

    def statisztika(self):
        """eredmenyek statisztikaja"""
        stat = {}
        for meccs in self.meccsek:
            if meccs.hgol >= meccs.vgol:
                kulcs = str(meccs.hgol) + '-' + str(meccs.vgol)
            else:
                kulcs = str(meccs.vgol) + '-' + str(meccs.hgol)
            stat[kulcs] = stat.get(kulcs, 0) + 1

        return stat

    def statisztika_kiir(self):
        """eredmenyek statisztikaja kiirasa"""
        sz = ''
        for s in self.statisztika():
            sz += s + ': ' + str(self.statisztika()[s]) + ' darab\n'
        return sz


class Csapat:
    """Csapat osztalya"""
    def __init__(self, nev):
        self.nev = nev

    def golok(self, fordulo):
        """a csapat lott es kapott goljai"""
        gol = {}
        for meccs in fordulo.meccsek:
            if meccs.hcs == self.nev:
                gol['lott'] = gol.get('lott', 0) + meccs.hgol
                gol['kapott'] = gol.get('kapott', 0) + meccs.vgol
            if meccs.vcs == self.nev:
                gol['lott'] = gol.get('lott', 0) + meccs.vgol
                gol['kapott'] = gol.get('kapott', 0) + meccs.hgol
        return gol

    def golok_kiir(self, fordulo):
        """a csapat lott es kapott goljainak kiirasa"""
        sz = ''
        gol = self.golok(fordulo)
        return 'lőtt: ' + str(gol['lott']) + ' kapott: ' + str(gol['kapott'])

    def kikap_otthon(self, fordulo):
        """eloszor kikap otthon vagy veretlen marad"""
        m = None
        for meccs in fordulo.meccsek:
            if meccs.hcs == self.nev and meccs.gyoz == meccs.vcs:
                m = meccs
                break
        return m

    def kikap_otthon_kiir(self, fordulo):
        """eloszor kikap otthon vagy veretlen marad kiirasa"""
        m = self.kikap_otthon(fordulo)
        if m is None:
            return 'A csapat veretlen maradt otthon.'
        else:
            return 'Elöszőr a ' + str(m.ford) + '. fordulóban kapott ki a ' + m.vcs + ' csapattól.'


class Fajl:
    """Fajlmuveletek osztalya"""
    def __init__(self, fnev):
        self.fnev = fnev

    def beolvas(self):
        """fajl adatainak beolvasasa"""
        # szotar kulcs a sorozat cime, ertekei az epizodokat tartalmazo lista
        f = open(self.fnev)
        db = int(f.readline())
        meccsek = [Meccs(*sor.split()) for sor in f.readlines()]
        return meccsek

    def kiir(self, adatok):
        """fajlba iras"""
        f = open(self.fnev, 'w')
        print(adatok, end='', file=f)
        f.close()


# 1. feladat
fajl = Fajl('meccs.txt')
meccsek = fajl.beolvas()
fordulo = Fordulo(meccsek)

# 2. feladat
ford = int(input("Add meg a forduló számát: "))
fordulo.fordulo_meccsei_kiir(ford)

# 3. feladat
print("4. feladat\nFordulók, ahol megfordult az állás")
print(fordulo.megfordult_meccsek_kiir())

# 4. feladat
cs = input("4. feladat: Adjon meg egy csapatot (pl. Lelkesek): ")
csapat = Csapat(cs)

# 5. feladat
print("5. feladat")
print(csapat.golok_kiir(fordulo))

# 6. feladat
print("6. feladat")
print(csapat.kikap_otthon_kiir(fordulo))

# 7. feladat
print("7. feladat")
fajl = Fajl('statOOP.txt')
fajl.kiir(fordulo.statisztika_kiir())
print("Fájlba írás kész.")
