Python - palindromy. Problem z kodem

0

Przygotowuję się do matury z informatyki i próbuję rozwiązywać arkusze z poprzednich lat. Z jednym z nich mam niestety problem. Coś jest złego w moim kodzie ponieważ nie działa we wszystkich przypadkach.

W załączniku zamieszczam opis części zadania: https://4programmers.net/assets/15472/Przechwytywanie.PNG

Link do pliku ze słowami: https://drive.google.com/file/d/1ades29HzcVRjde5IJ-EjVOjGdy3PIa_p/view?usp=sharing

Poniżej zamieszczam swój kod. Jakie są w nim błędy?

def palindrom (ostatnia, slowo):
p = 0
k = ostatnia
while (not((p==k) or (p+1==k))):
if slowo[p] != slowo[k]:
return False
k-=1
p+=1

return True

t = 0
mn = 50
mx = 0
sn = ""
sx = ""
np = 0
plik = open("slowa.txt", "r")
haslo = open("hasla_b.txt", "w")
slowa = open("slowa_b.txt", "w")
slowa.write("1\n")
suma_dlugosci = 0
while t!=1000:
t+=1

x = plik.readline()
print(x)
znak = x[0]
ost = len(x)-1
while ost>=0:
    if x[ost] == znak:
        test = palindrom(ost, x)
        if test == True:
            w1 = x[0:ost+1]
            print(">", w1)
            np=ost+1
            ost=-1
    ost-=1

print("<", x[0:np], x[np:len(x)])
w2 = x[np:len(x)]
odw = w2[::-1]
nowe = odw+w1+w2
print(nowe)
haslo.write(nowe)
0

Nie rozumiem za bardzo Twojego IO, nie znam też przykładowego wejścia i wyjścia, ale sama funkcja tworząca hasło z danego słowa powinna wyglądać tak:

def word(s):
    if not s: return s
    for i in range(len(s), 0, -1):
        st = s[:i]
        if st == st[::-1]:  # czy palindrom 
            rest = s[i:]
            return rest[::-1] + s

1 użytkowników online, w tym zalogowanych: 0, gości: 1