class Fajl:
    """Fajlmuveletek osztalya"""

    def __init__(self, fnev):
        self.fnev = fnev

    def beolvas(self):
        """fajl adatainak beolvasasa"""
        f = open(self.fnev)
        kodtabla = [x.strip() for x in f.readlines()]
        f.close()
        return kodtabla

    def kiir(self, adatok):
        """fajlba iras"""
        f = open(self.fnev, 'w', encoding='utf-8')
        print(adatok, end='', file=f)
        f.close()


class Szoveg:
    kodtabla = Fajl('Vtabla.dat').beolvas()

    def __init__(self, szoveg='', kod=''):
        self.szoveg = szoveg
        self.kod = kod

    def atalakit(self):
        """nyilt szoveg atalakitasa"""
        atalakitott_szoveg = None
        szoveg = self.szoveg.upper()
        betuk = {'Á': 'A', 'É': 'E', 'Í': 'I', 'Ó': 'O', 'Ö': 'O', 'Ő': 'O', 'Ü': 'U', 'Ű': 'U', 'Ú': 'U'}
        for k, v in betuk.items():
            szoveg = szoveg.replace(k, v)
            atalakitott_szoveg = szoveg

        for c in atalakitott_szoveg:
            if ord(c) not in range(ord('A'), ord('Z') + 1):
                atalakitott_szoveg = atalakitott_szoveg.replace(c, '')
        return atalakitott_szoveg

    def hosszu_kulcs(self):
        """kulcs osszefuzese"""
        sz = ''
        for i in range(len(self.atalakit()) // len(self.kod)):
            sz += self.kod
        sz += self.kod[:(len(self.atalakit()) % len(self.kod))]
        return sz

    def kodol(self):
        """szoveg kodolasa"""
        # 6. feladat
        kodtabla = self.kodtabla
        kulcs = self.hosszu_kulcs()
        szoveg = self.atalakit()
        kodolt = ''
        for i in range(len(kulcs)):
            oszlop = [kodtabla[j][0] for j in range(len(kodtabla))]
            s = oszlop.index(szoveg[i])
            o = kodtabla[0].index(kulcs[i])
            kodolt += kodtabla[s][o]
        return kodolt


# 1. feladat
nyilt_szoveg = input("1. feladat:\nAdjon meg egy szöveget: ")
szoveg = Szoveg(nyilt_szoveg)

# 2. 3. feladat
print("3. feladat\nÁtalakított szöveg:", szoveg.atalakit())

# 4. feladat
kulcsszo = input("4. feladat:\nAdjon meg egy legfeljebb ötbetűs kulcsszót: ").upper()

# 5. feladat
szoveg = Szoveg(nyilt_szoveg, kulcsszo)
print("5. feladat\nNyilt szöveg és kulcsszöve együtt\n", szoveg.atalakit(), '\n', szoveg.hosszu_kulcs(), sep='')

# 7. feladat
print("7. feladat\nKódolt szöveg:")
print(szoveg.kodol())
