PY_I_R_W14_M17 Uwaga plagiat - porównujemy teksty.
Może jutro ta dama sama da tortu jeżom, Ada biada i bada, A to kanapa pana Kota – co łączy te zdania? Brzmią tak samo czytane od lewej strony, jak i od prawej. To palindromy.
Patrząc na słowo, możemy bez większego problemu określić, czy jest ono palindromem, czy nie. Jednak w jaki sposób wytłumaczyć tok naszego rozumowania komputerowi i nauczyć go sprawdzania, czy podane słowo jest palindromem? Może okazać się to przydatne, gdy przyjdzie nam analizować palindromy wielowyrazowe tj.: Ada raportuje, że jutro parada, czy liczący ponad 33 tysiące liter tekst prof. Tadeusza Morawskiego Żartem w metraż.
Od niepamiętnych czasów ludzie, szukając rozrywki, bawili się również słowami. Zapewne w ten właśnie sposób powstały palindromy (z gr. palindromeo – „biec z powrotem”). Być może miały one także znaczenie magiczne...
Zdefiniujemy funkcję sprawdzającą, czy podane wyrażenie jest palindromem.
W tym celu wykorzystamy pętlę for oraz instrukcję warunkową if ... else.
Przyjmujemy następującą strategię: jeśli wyraz jest palindromem, to jego pierwsza litera będzie taka sama jak ostatnia, druga będzie taka sama jak przedostatnia itd. Dopóki nie dojdziemy do połowy wyrazu. Dalsze porównywanie nie ma sensu, ponieważ będziemy porównywać te same pary znaków.
Zapiszemy funkcję realizującą to samo zadanie z użyciem wyrażenia indeksującego. Zwróćmy uwagę, o ile krótsza jest teraz lista instrukcji:
Pamiętajmy, że wielkość liter i znaki przestankowe mają znaczenie podczas sprawdzania, czy wyrażenie jest palindromem. Działanie pierwszej z przedstawionych funkcji polega na porównywaniu odpowiadających sobie elementów po obu stronach ciągu. Ludzki mózg potrafi zignorować znaki, które uznaje za zbędne i brać pod uwagę wyłącznie litery (a także nie uwzględniać ich rozmiaru). Komputer nie jest w stanie tego zrobić.
Druga funkcja porównuje dwa ciągi od początku.
Jak zatem należy zdefiniować funkcję, aby móc sprawdzać bardziej skomplikowane łańcuchy znaków? Musimy najpierw pozbyć się takich elementów, jak spacja, średnik, przecinek, dwukropek, kropka, wykrzyknik lub znak zapytania, a następnie zamienić wielkie litery na małe albo małe na wielkie (czyli sprawić, że wszystkie znaki będą jednakowej wielkości). Dopiero wówczas możemy zająć się badaniem ciągu.
Zdefiniuj funkcję sprawdz_palindrom(tekst), która będzie działać zgodnie z przedstawionymi założeniami i wykorzysta wyrażenia indeksujące.
Aby uprościć zapis naszej funkcji, możemy wykorzystać wyrażenia regularne. Ze stosowanym w tym celu parametrem r"[!?, ;:.]" zapoznamy się dokładnie w oficjalnej dokumentacji języka Python i modułu re.
Napisz program sprawdzający, czy dany napis jest palindromem.
Specyfikacja:
Dane:
zdanie– łańcuch znaków
Wynik:
Komunikat Napis jest palindromem lub Napis nie jest palindromem.
Słownik
(ang. slice) zapisane w nawiasach kwadratowych wyrażenie, które pozwala wskazać wybraną część sekwencji; może mieć ono postać [a:b] lub [a] (bądź podobną); nazywane także wycinkiem
wzorzec pomocny podczas opisywania znaków w łańcuchu tekstowym; w języku Python dostępny w module standardowym re