Witam. Mam generalnie taki skrypt


from os import system # Importowanie biblioteki odpowiedzialnej za wykonyanie polecen cmd

def TRIM_AND_WITHOUT_SPACE(__val: str) -> str: # Funkcja ktora usuwa
    __data: str = __val.strip() # Wszelkiego rodzaju znaki biale
    __data: str = __data.replace(' ', '') # oraz spacje z tekstu
    return __data

def isEquals(__val1: str, __val2: str) -> bool: # Funkcja ktora porownuje teksty
    __data: str = __val1.replace(__val2, '') # Czy w 1 tekscie znajduje sie 2 teskt
    return __data in __val2 # oraz jego powtorzenia w tekscie 

index: int = 1; # zmienna pomocnicza

system("cls|clear") # czysczenie ekranu

#========================== Wyswietlanie danych ================================

print("======================= Keys =============================\n")

with open("odszyfruj.txt", "r") as f: # Otwieranie pliku
    # Kontener na dane ktore sa wierszami bez spacji i znakow bialych
    files: list[str] = list(map(TRIM_AND_WITHOUT_SPACE, f.readlines())) 
    
    for i in range(0, len(files), 2): # Petla po kontenerze ktory zawiera tekst jawny oraz zaszyfrowany
        line1, line2 = files[i], files[i + 1] # odzielanie linijek tekstu zaszyfrowanego i jawnego
        key: str = "" # Petla na klucz calej wiadomosci
        
        for letter1, letter2 in zip(line1, line2): # Petla po wierszach
            number: int = ord(letter2) - ord(letter1) # Obliczanie roznicy za pomoca ktorej uzyskuje sie dane klucza

            # Jezeli dana wartosc nie miesci sie w przedziale alfabetu to dodaj assci litery z
            if number <= 0: number += 26 
            
            character: str = chr(number + 64) # Zamiana kodu ascii klucza na litere
            key += character # Dodawanie litery do klucza

        keyRestore: str = "" # kontener pomocniczy na klucz
        searchKey: str = "" # Wyszukiwany klucz bez powtorzen
        prevousRestore: str = "" # poprzedni stan dla liter ktore zostaj pominiete

        for letter in key: # petla po kluczu
            keyRestore += letter  # Zwiekszanie literki w kontenerze

            # Jezeli dane nie sa rowne sobie ani nie zawieraja w calosci siebie
            if not isEquals(keyRestore, searchKey): 

                if not prevousRestore: # Jezeli nie ma stanu poprzedniego
                    searchKey += letter # to dodaj tylko litere do szukanego klucza

                else: # W przeciwnym razie
                    if keyRestore[0] == letter: # W przypadku gdy obecna litera zaczynal powtorek szukanego klucza
                        searchKey += prevousRestore # To dodaj tylko poprzedni stan

                    else: # W przeciwnym razie
                        searchKey += prevousRestore + letter # zwieksz liczbe o aktualna liczbe liter

                prevousRestore: str = "" # Resetowanie poprzedniego stanu
                continue # Pomijanie instrukcji

            # Zwiekszanie poprzedniego stanu w przypadku kiedy dane sobie są równe albo zawieraj w sobie czasteke siebie
            prevousRestore += letter 

        print(f"     {index}. {searchKey}") # Wyswietlanie wyniku
        index += 1 # Zwiekszenie numerowania o 1

print("\n=========================================================")



Który ma za zadanie odczytac z pliku tekst jawny i zaszyfrowany i znaleźć klucz do niego. Ale z racji tego ze klucz jest powtarzającym się jednym wyrazem bądź 2 wyrazów to muszę właśnie wyodrębnić te wyrazy. Problem jest właśnie z działaniem funkcji def isEquals() bo dla większości wyników klucz jest znajdowany ale dla 2 wartości już nie

screenshot-20230410173917.png

błąd jest w 10 i 15 linijce, bo w nich powinno zwrócić ERICHMARIAMARQUE oraz DZWONNIKZNOTREDAME. Tak to matura próbna z operonem :)
Poniżej pokazuje dane jakie sa w pliku z danymi. Proszę o szybką odpowiedź

ALA MA KOTA
TLZ SS DOSG
SA DWIE DROGI ABY PRZEZYC ZYCIE JEDNA TO ZYC TAK JAKBY NIC NIE BYLO CUDEM DRUGA TO ZYC TAK JAKBY CUDEM BYLO WSZYSTKO
TM FBAY IACZC FKM QDBJRSH IMVCJ SSEZC YG TDL HTE OJYCK PNU HNN PRFT LIEQO IJOLJ HH TDL HBW LFCVD LIWYR KMMA YXRSXCYH
DRAMATEM ZYCIA JEST TO ZE STARZEJEMY SIE ZBYT SZYBKO A MADRZEJEMY ZBYT POZNO
FWOWBGNA FQDWL VNGV YC JF FCOXRFXPYH GKJ NLZG BNETLC L YJRTESTFZH NHQU DZLWC
KRYTYKA JEST CZYMS CZEGO MOZEMY LATWO UNIKNAC NIE MOWIAC NIC NIE ROBIAC NIC I BEDAC NIKIM
LJXMSZU OQXM DRXFM RTJST FPRDFS AUYIT NOAJGUR HNQ RHXAZV HXW SUJ KPTHTW CCH U GXESB GCZCR
NIE WYCHOWUJ SWOICH DZIECI ABY BYLY BOGATE NAUCZ JE ABY BYLY SZCZESLIWE WIEC KIEDY DOROSNA BEDA ZNAC WARTOSC RZECZY A NIE ICH CENE
GCJ SDMWQPND XSTSRJ WSCJYN KQA URFD XTQPVX GUZYE TT CUR VDHD COESXMQEBO LKXV ENAII SQKHMSW GOSC SGUH SFBIQLV LEAHJN C GBY NYM MTPX
ZYCIE NIE JEST SPRAWIEDLIWE I BYC MOZE TO DOBRA WIADOMOSC DLA WIEKSZOSCI Z NAS
ORFJW KRQ NJHM VQJXFUIIABZF A YHO QTOX WP VLKDE BXTGPELBO HQP PLFCPIAWHX S QBK
MYSL O PRZESZLOSCI TYLKO WTEDY KIEDY MOZE CI ONA SPRAWIC PRZYJEMNOSC
WZGQ P KKTJGJMCXDD MSQYY XHJET DCJRI NCEF XB ISO CQFFXDV JWNIKSROJLW
MYSLENIE NIE JEST LATWE ALE MOZNA SIE DO NIEGO PRZYZWYCZAIC
XTUGXDDH VJY OPDO NVMMZ DTF GTKYV UDX TJ QQFAT ACUAUPOXCIJW
MALO LUDZI MYSLI ALE KAZDY CHCE MIEC SWOJE ZDANIE
TFAG SZFEA XDEQH HQT CHEFD USHQ RHLH HOVOG EVLSUJ
NAJGORSZA CHOROBA SWIATA JEST MYSLENIE JEST BOWIEM NIEULECZALNE
SSSJWETRJ DZTEPTR NBNSCD RRTL VZKQROAV EJXL KREVFE WJWZYFUQVQSW
PRZYJACIELU JESLI BEDZIE CI DANE ZYC STO LAT TO JA CHCIALBYM ZYC STO LAT MINUS JEDEN DZIEN ABYM NIE MUSIAL ZYC ANI JEDNEGO DNIA BEZ CIEBIE
FJORSBFIJWK BTLUJ EEIKYW RB MBQE EJS KIH UBW TT UQ UWVRBOBDX PQR LCP OAY XYFJL SFGES OPATG JCBM STU EJLRBO ZDN QFX CNEQELZ TFXT KFC CNPRAT
PRZESZLOSS POTRAFI RANIC MOZESZ OD NIEJ UCIEKAC LUB UCZYC SIE Z NIEJ
AJOQEEIZKH BAYOLXX DMSFN EDLQXW ZV CUQO RNATWMH IFT JOLDZ DAT L ZNBU
MUSISZ POMYSLEC O CZYMS CUDOWNYM, A TAKIE MYSLI UNIOSA CIE SAME W POWIETRZU
CDHCKU IENMIUTW G XSONG SDSIOIRC- O JJZCW HRIMW KWXIKV VYF GQVT Q HJPYFHHIJ
NIE POZWOL MALYM ROZUMOM PRZEKONAC CIE ZE TWOJE MARZENIA SA ZBYT DUZE
ZRQ EXSQXO UMUKB AHTDPWY YDONDIWDK ORQ ON MQXMM YJDONGCJ VI LKKI MNTN
MOZESZ PAMIETAC PIEKNA TWARZ PRZEZ KILKA DNI ALE PIEKNA DUSZE ZAPAMIETASZ NA CALE ZYCIE
QOWTGN YLMWTNSH TJRPRA QLOFI ARNTT CNPLN IRI XAS DRPKBP XMXDF MFTAJXSHJDZ BP WSQI ALHME
DLA CALEGO SWIATA MOZESZ BYC NIKIM DLA KOGOS MOZESZ BYC CALYM SWIATEM
QMM BLENHO XJJMSL FXAEXM CKB YBTJM IYB WNRHB NOERTL AJV LBLDZ TIHLMNN
KOCHA SIE ZA NIC NIE ISTNIEJE ZADEN POWOD DO MILOSCI
LAFPF FRP AM QQH ARP JEWVNRSP AMGMS CXHPP GW RVUZTOL
ZYCIE JEST JAK PUDELKO CZEKOLADEK NIGDY NIE WIESZ CO CI SIE TRAFI
FNUAJ CYZO WQQ EMVJEEV XMUQDDSIXE UDTTE CAW BBYZU PE IX KAJ MLHAV
LEPIEJ ZALICZAC SIE DO NIEKTORYCH NIZ DO WSZYSTKICH
MSTAEO JTMYNOXV DRF RS FIJUMPHJRE GTI EC AKZDCMLYNW
KAZDA CHWILA JEST DOBRA ZEBY ZMIENIC SWOJE ZYCIE
GBNMM OIPTKW KSBF PPUCZ VFPH LYJXYHY TKXVQ ARNHA