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
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