powrót
Palindrom to takie słowo/zdanie/ciąg, które czytane z lewej do prawej ma dokładnie taką samą sekwencję znaków jak czytany z prawej do lewej np.:
$$kajak$$
$$kobylamamalybok$$
Zadanie
Wczytaj jeden wyraz i wypisz tak, jeśli reprezentuje on palindrom lub nie w przeciwnym razie.
Wejście
Jeden wyraz złożony wyłącznie z małych liter łacińskiego alfabetu, nie dłuższy niż 1000 znaków.
Wyjście
Napis tak lub nie w zależności, czy łańcuch reprezentuje palindrom, czy nie.
Rozwiązanie pod część praktyczną
Sprawdzimy, czy podany wyraz jest taki sam jak wyraz po odwróceniu.
# **********algorytm.edu.pl***************
def czy_palindrom(n):
return "tak" if n == n[::-1] else "nie"
# głowna część programu
print(czy_palindrom(input()))
Rozwiązanie pod część teoretyczna
W tym rozwiązaniu będziemy przyglądać się znakom stojącym na pozycjach:
pierwszej i ostatniej,
drugiej i przedostatniej,
itd. aż sprawdzimy wszystkie litery do połowy ciągu. Jeśli za każdym razem będzie zgodność, to zwrócimy napis "tak", jeśli napotkamy chociażby jedno niedopasowanie, to zwrócimy napis "nie".
# **********algorytm.edu.pl***************
def czy_palindrom(n):
i = 0; j = len(n) - 1 # ustawiam na pierwszą i ostatnią literę
while i < j:
if n[i] != n[j]: # jeśli mamy niezgodność liter
return "nie"
i += 1
j -= 1
return "tak" # jeśli wszystkie litery stoją na odpowiednich pozycjach
# głowna część programu
print(czy_palindrom(input()))
-
Definiowanie funkcji czy_palindrom(n)
: Ta funkcja przyjmuje jedną argument n
, który jest ciągiem znaków (napisem). Funkcja sprawdza, czy ten napis jest palindromem.
-
Inicjowanie zmiennych i
i j
: Na początku funkcji, zmienne i
i j
są inicjowane odpowiednio jako 0 i indeks ostatniej litery w napisie n
. i
będzie indeksem pierwszej litery, a j
indeksem ostatniej litery.
-
Rozpoczęcie pętli while
: Pętla while
działa tak długo, jak długo i
jest mniejsze niż j
. Oznacza to, że pętla będzie działać, dopóki i
nie osiągnie lub przekroczy j
.
-
Sprawdzanie, czy litery na pozycji i
i j
są takie same: Wewnątrz pętli while
jest warunek sprawdzający, czy litera na pozycji i
jest różna od litery na pozycji j
. Jeśli są różne, funkcja zwraca "nie" (czyli napis nie jest palindromem).
-
Zwiększanie i
i zmniejszanie j
: Jeśli litery na pozycjach i
i j
są takie same, to i
jest zwiększane o 1, a j
jest zmniejszane o 1. To jest krok, który przesuwa sprawdzane litery w kierunku środka napisu.
-
Powrót do punktu 4: Pętla while
powraca do sprawdzania kolejnej pary liter, aż i
stanie się większe lub równe j
.
-
Jeśli pętla while
zakończy się (czyli i
osiągnie lub przekroczy j
), to znaczy, że wszystkie litery w napisie n
były takie same w kolejności odwróconej, co jest warunkiem dla palindromu. W takim przypadku funkcja zwraca "tak".
-
Główna część programu: Po zdefiniowaniu funkcji czy_palindrom(n)
, program wchodzi do głównej części. Pobiera wejście od użytkownika za pomocą funkcji input()
, a następnie wywołuje funkcję czy_palindrom(n)
z tym wejściem i wypisuje wynik na standardowe wyjście (ekran).
Program ten jest prostym przykładem sprawdzania, czy podane słowo jest palindromem, korzystając z pętli while
do porównywania liter na początku i końcu napisu. Jeśli wszystkie litery pasują, program zwraca "tak"; w przeciwnym razie zwraca "nie".