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