Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Wielokrotny wybór w języku Python

Podczas tworzenia programu zdarzają się sytuacje, w których potrzebujemy zrealizować jeden z wielu scenariuszy działań.

Przeanalizujmy przykład, gdzie mamy wypisać informację, w którym z następujących przedziałów: ( 10 ,   15 ] ,   ( 15 ,   21 ] ,   ( 21 ,   50 ] zawiera się dana liczba.

Do zrealizowania takiego scenariusza możemy zastosować konstrukcję if/elif/else, ponieważ wybieramy jeden z wielu przedziałów.

Ogólną postać instrukcji znajdziesz w e‑materiale Instrukcja warunkowa w języku PythonPb35akOxSInstrukcja warunkowa w języku Python.

Przykład 1

Napiszmy program, który zrealizuje taki scenariusz.

Linia 1. wartosc znak równości 23. Linia 3. if 10 otwórz nawias ostrokątny wartosc and wartosc otwórz nawias ostrokątny znak równości 15 dwukropek. Linia 4. print otwórz nawias okrągły cudzysłów Przedział 1 cudzysłów zamknij nawias okrągły. Linia 5. elif wartosc zamknij nawias ostrokątny 15 and wartosc otwórz nawias ostrokątny znak równości 21 dwukropek. Linia 6. print otwórz nawias okrągły cudzysłów Przedział 2 cudzysłów zamknij nawias okrągły. Linia 7. elif wartosc zamknij nawias ostrokątny 21 and wartosc otwórz nawias ostrokątny znak równości 50 dwukropek. Linia 8. print otwórz nawias okrągły cudzysłów Przedział 3 cudzysłów zamknij nawias okrągły. Linia 9. else dwukropek. Linia 10. print otwórz nawias okrągły cudzysłów Liczba nie zawiera się w żadnym z przedziałów cudzysłów zamknij nawias okrągły.
Ważne!

Powyższy program możemy zapisać, korzystając z kilku instrukcji warunkowych.

Linia 1. wartosc znak równości 23. Linia 3. if wartosc zamknij nawias ostrokątny 10 and wartosc otwórz nawias ostrokątny znak równości 15 dwukropek. Linia 4. print otwórz nawias okrągły cudzysłów Przedział 1 cudzysłów zamknij nawias okrągły. Linia 5. if wartosc zamknij nawias ostrokątny 15 and wartosc otwórz nawias ostrokątny znak równości 21 dwukropek. Linia 6. print otwórz nawias okrągły cudzysłów Przedział 2 cudzysłów zamknij nawias okrągły. Linia 7. if wartosc zamknij nawias ostrokątny 21 and wartosc otwórz nawias ostrokątny znak równości 50 dwukropek. Linia 8. print otwórz nawias okrągły cudzysłów Przedział 3 cudzysłów zamknij nawias okrągły. Linia 9. if wartosc otwórz nawias ostrokątny znak równości 10 or wartosc zamknij nawias ostrokątny 50 dwukropek. Linia 10. print otwórz nawias okrągły cudzysłów Liczba nie zawiera się w żadnym z przedziałów cudzysłów zamknij nawias okrągły.

Przy kilku instrukcjach if warunek każdej z nich sprawdzany jest niezależnie od innych, natomiast przy konstrukcji if/elif/else, jeśli jakiś warunek zostanie spełniony, to dalsze warunki nie są sprawdzane.

Przykład 2

Spróbujmy teraz przeanalizować inną sytuację. Chcemy, w zależności od podanej przez użytkownika liczby (wybranej opcji), wykonać pewną akcję. Zdefiniujemy cztery funkcje, a do wyboru odpowiedniej opcji wykorzystamy instrukcję if/elif/else:

Linia 1. def funkcja podkreślnik 1 otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. print otwórz nawias okrągły cudzysłów Funkcja 1 kropka cudzysłów zamknij nawias okrągły. Linia 4. def funkcja podkreślnik 2 otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 5. print otwórz nawias okrągły cudzysłów Funkcja 2 kropka cudzysłów zamknij nawias okrągły. Linia 7. def funkcja podkreślnik 3 otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 8. print otwórz nawias okrągły cudzysłów Funkcja 3 kropka cudzysłów zamknij nawias okrągły. Linia 10. def funkcja podkreślnik x otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 11. print otwórz nawias okrągły cudzysłów Funkcja x kropka cudzysłów zamknij nawias okrągły. Linia 14. wybor znak równości input otwórz nawias okrągły cudzysłów Podaj numer dwukropek cudzysłów zamknij nawias okrągły. Linia 15. wynik znak równości int otwórz nawias okrągły wybor zamknij nawias okrągły. Linia 17. if wynik znak równości znak równości 1 dwukropek. Linia 18. funkcja podkreślnik 1 otwórz nawias okrągły zamknij nawias okrągły. Linia 19. elif wynik znak równości znak równości 2 dwukropek. Linia 20. funkcja podkreślnik 2 otwórz nawias okrągły zamknij nawias okrągły. Linia 21. elif wynik znak równości znak równości 3 dwukropek. Linia 22. funkcja podkreślnik 3 otwórz nawias okrągły zamknij nawias okrągły. Linia 23. else dwukropek. Linia 24. funkcja podkreślnik x otwórz nawias okrągły zamknij nawias okrągły. Linia 26. kratka Efekt wykonania dwukropek. Linia 28. kratka Podaj numer dwukropek 2. Linia 29. kratka Funkcja 2 kropka.

Użycie słownika jako alternatywy dla konstrukcji wielokrotnego wyboru if/elif/else

Możemy skorzystać z pewnej właściwości języka Python. Zgodnie z nią każda funkcja może być potraktowana jako obiekt i przypisana do dowolnego elementu innego obiektu. Zatem poprawny będzie następujący przykład.

Zdefiniujmy cztery funkcje i wykonajmy je w zależności od wyboru użytkownika.

Linia 1. def funkcja podkreślnik 1 otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. print otwórz nawias okrągły cudzysłów Funkcja 1 kropka cudzysłów zamknij nawias okrągły. Linia 4. def funkcja podkreślnik 2 otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 5. print otwórz nawias okrągły cudzysłów Funkcja 2 kropka cudzysłów zamknij nawias okrągły. Linia 7. def funkcja podkreślnik 3 otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 8. print otwórz nawias okrągły cudzysłów Funkcja 3 kropka cudzysłów zamknij nawias okrągły. Linia 10. def funkcja podkreślnik x otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 11. print otwórz nawias okrągły cudzysłów Funkcja x kropka cudzysłów zamknij nawias okrągły. Linia 14. wybor znak równości input otwórz nawias okrągły cudzysłów Podaj numer dwukropek cudzysłów zamknij nawias okrągły. Linia 15. wynik znak równości int otwórz nawias okrągły wybor zamknij nawias okrągły. Linia 17. kratka tworzymy słownik zawierający jako wartości nazwy funkcji. Linia 18. slownik znak równości otwórz nawias klamrowy 1 dwukropek funkcja podkreślnik 1 przecinek 2 dwukropek funkcja podkreślnik 2 przecinek 3 dwukropek funkcja podkreślnik 3 zamknij nawias klamrowy. Linia 20. kratka jeśli wybór jest kluczem słownika przecinek wykonujemy funkcję. Linia 21. if wynik in slownik dwukropek. Linia 22. slownik otwórz nawias kwadratowy wynik zamknij nawias kwadratowy otwórz nawias okrągły zamknij nawias okrągły. Linia 23. kratka w innym przypadku wykonujemy konkretną funkcję. Linia 24. else dwukropek. Linia 25. funkcja podkreślnik x otwórz nawias okrągły zamknij nawias okrągły.

Trójargumentowe wyrażenie wyboru

Używane jest w sytuacjach, gdy wystarczy zwrócić prostą informację zależną od jednego warunku. W takim przypadku rozbudowywanie kodu jest niecelowe.

Oto wyrażenie trójargumentowe zapisane w języku Python:

Linia 1. wartość podkreślnik gdy podkreślnik prawda if warunek podkreślnik logiczny else wartość podkreślnik gdy podkreślnik fałsz.

Instrukcja taka odpowiada poleceniom:

Linia 1. if warunek podkreślnik logiczny dwukropek. Linia 2. wartość podkreślnik gdy podkreślnik prawda. Linia 3. else dwukropek. Linia 4. wartość podkreślnik gdy podkreślnik fałsz.

Porównajmy kody dwóch funkcji. Mają one sprawdzić, czy tekst przekazany im jako argument jest palindromempalindrompalindromem. Sprawdzenie, czy słowo jest palindromem, wykonane jest przy użyciu wyrażenia indeksującegowyrażenie indeksującewyrażenia indeksującego.

Pierwsza funkcja wykorzystuje zwykłą konstrukcję if/else:

Linia 1. def czy podkreślnik palindrom otwórz nawias okrągły tekst zamknij nawias okrągły dwukropek. Linia 2. if tekst znak równości znak równości tekst otwórz nawias kwadratowy dwukropek dwukropek minus 1 zamknij nawias kwadratowy dwukropek. Linia 3. return True. Linia 4. else dwukropek. Linia 5. return False.

Druga funkcja wykorzystuje wyrażenie trójargumentowe:

Linia 1. def czy podkreślnik palindrom otwórz nawias okrągły tekst zamknij nawias okrągły dwukropek. Linia 2. return True if tekst znak równości znak równości tekst otwórz nawias kwadratowy dwukropek dwukropek minus 1 zamknij nawias kwadratowy else False.

Obie powyższe funkcje mogą być zapisane również następująco:

Linia 1. def czy podkreślnik palindrom otwórz nawias okrągły tekst zamknij nawias okrągły dwukropek. Linia 2. return tekst znak równości znak równości tekst otwórz nawias kwadratowy dwukropek dwukropek minus 1 zamknij nawias kwadratowy.

Innym przykładem zastosowania wyrażenia trójargumentowego jest podanie jednego z dwóch komunikatów, zależnych od spełnienia pewnego warunku. Posłużymy się funkcją print():

Linia 1. wartosc znak równości 15. Linia 2. print otwórz nawias okrągły apostrof Dużo apostrof if wartosc zamknij nawias ostrokątny 20 else apostrof Mało apostrof przecinek apostrof pieniędzy kropka apostrof zamknij nawias okrągły. Linia 3. kratka Mało pieniędzy kropka. Linia 5. wartosc znak równości 23. Linia 6. print otwórz nawias okrągły apostrof Dużo apostrof if wartosc zamknij nawias ostrokątny 20 else apostrof Mało apostrof przecinek apostrof pieniędzy kropka apostrof zamknij nawias okrągły. Linia 7. kratka Dużo pieniędzy kropka.

Instrukcja match/case

W wersji 3.10 języka Python została wprowadzona instrukcja match/case. Instrukcja ta jako argument przyjmuje wyrażenie i porównuje jego wartość ze zdefiniowanymi schematami. Jeśli wyrażenie jest zgodne ze zdefiniowanym schematem, wykonywane są związane z nim instrukcje.

Instrukcja match/case zapisana za pomocą języka Python wygląda następująco:

Linia 1. match numer podkreślnik ucznia dwukropek. Linia 2. case 1 dwukropek. Linia 3. kratka wypisz informacje o uczniu numer 1 kropka. Linia 4. case 2 dwukropek. Linia 5. kratka wypisz informacje o uczniu numer 2 kropka. Linia 6. case 3 dwukropek. Linia 7. kratka wypisz informacje o uczniu numer 3 kropka. Linia 8. case 4 dwukropek. Linia 9. kratka wypisz informacje o uczniu numer 4 kropka.
Linia 1. numerUucznia znak równości 3. Linia 3. match numer podkreślnik ucznia dwukropek. Linia 4. case 1 dwukropek. Linia 5. kratka wypisz informacje o uczniu numer 1 kropka. Linia 6. case 2 dwukropek. Linia 7. kratka wypisz informacje o uczniu numer 2 kropka. Linia 8. case 3 dwukropek. Linia 9. kratka wypisz informacje o uczniu numer 3 kropka. Linia 10. case 4 dwukropek. Linia 11. kratka wypisz informacje o uczniu numer 4 kropka.

Instrukcja match/case pobiera obiekt (numer_ucznia), testuje go względem jednego lub więcej wzorców dopasowania (case 1, case 2 etc.) i wykonuje akcję, jeśli znajdzie dopasowanie.

Po każdym słowie kluczowym case następuje wzorzec dopasowania.

Python wykonuje dopasowania, przechodząc przez listę przypadków od góry do dołu. Przy pierwszym dopasowaniu Python wykonuje instrukcje w odpowiadającym im bloku przypadków, a następnie przeskakuje na koniec bloku dopasowania i kontynuuje dalszą część programu. Oznacza to, że po znalezieniu pierwszego pasującego przypadku, kończy się działanie instrukcji match/case.

Załóżmy, że chcemy napisać program, który wyświetli komunikat Wakacje!, jeśli użytkownik poda numer wakacyjnego miesiąca (zakładamy, że wakacyjne miesiące to lipiec i sierpień) lub To nie wakacje :-(, jeśli poda numer jakiegokolwiek innego miesiąca.

Linia 1. miesiac znak równości 2. Linia 3. match miesiac dwukropek. Linia 4. case 1 dwukropek. Linia 5. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 6. case 2 dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 8. case 3 dwukropek. Linia 9. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 10. case 4 dwukropek. Linia 11. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 12. case 5 dwukropek. Linia 13. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 14. case 6 dwukropek. Linia 15. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 16. case 7 dwukropek. Linia 17. print otwórz nawias okrągły cudzysłów Wakacje wykrzyknik cudzysłów zamknij nawias okrągły. Linia 18. case 8 dwukropek. Linia 19. print otwórz nawias okrągły cudzysłów Wakacje wykrzyknik cudzysłów zamknij nawias okrągły. Linia 20. case 9 dwukropek. Linia 21. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 22. case 10 dwukropek. Linia 23. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 24. case 11 dwukropek. Linia 25. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 26. case 12 dwukropek. Linia 27. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły.

Łączenie warunków

Używając operatora |, oznaczającego alternatywę, możemy łączyć warunki.

Linia 1. miesiac znak równości 2. Linia 3. match miesiac dwukropek. Linia 4. case 1 kreska pionowa 2 kreska pionowa 3 kreska pionowa 4 kreska pionowa 5 kreska pionowa 6 kreska pionowa 9 kreska pionowa 10 kreska pionowa 11 kreska pionowa 12 dwukropek. Linia 5. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 6. case 7 kreska pionowa 8 dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Wakacje wykrzyknik cudzysłów zamknij nawias okrągły.

Domyślny przypadek

W instrukcji match/case możemy podać przypadek _, który oznacza „w każdym innym przypadku”, czyli jeżeli wartość zmiennej podanej do sprawdzenia nie będzie równa żadnemu z ustawionych przypadków, program wykona fragment kodu zawarty w poleceniu.

Przeanalizuj przykład:

Linia 1. miesiac znak równości 27. Linia 3. match miesiac dwukropek. Linia 4. case 1 kreska pionowa 2 kreska pionowa 3 kreska pionowa 4 kreska pionowa 5 kreska pionowa 6 kreska pionowa 9 kreska pionowa 10 kreska pionowa 11 kreska pionowa 12 dwukropek. Linia 5. print otwórz nawias okrągły cudzysłów To nie wakacje dwukropek minus otwórz nawias okrągły cudzysłów zamknij nawias okrągły. Linia 6. case 7 kreska pionowa 8 dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Wakacje wykrzyknik cudzysłów zamknij nawias okrągły. Linia 8. case podkreślnik dwukropek. Linia 9. print otwórz nawias okrągły cudzysłów Wybrano liczbę spoza przedziału otwórz nawias kwadratowy 1 przecinek 12 zamknij nawias kwadratowy cudzysłów zamknij nawias okrągły.

Zaawansowane wykorzystanie

Instrukcja match/case pozwala na zdefiniowanie zmiennych lokalnych, które będą dopasowywane do argumentu. Do tych zmiennych lokalnych możemy się odwołać w zasięgu pojedynczej klauzuli case. Co więcej, możemy doprecyzować, kiedy ma się do tych zmiennych wpasować, stosując polecenie if.

Przeanalizujmy następujący program:

Linia 1. def wypisz podkreślnik informacje otwórz nawias okrągły punkt przecinek dziedzina podkreślnik x znak równości otwórz nawias okrągły minus 9 przecinek minus 1 zamknij nawias okrągły przecinek dziedzina podkreślnik y znak równości otwórz nawias okrągły minus 4 przecinek minus 1 zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. x1 przecinek x2 znak równości dziedzina podkreślnik x. Linia 3. y1 przecinek y2 znak równości dziedzina podkreślnik y. Linia 5. match punkt dwukropek. Linia 6. case otwórz nawias okrągły x przecinek y zamknij nawias okrągły if x1 otwórz nawias ostrokątny x otwórz nawias ostrokątny x2 and y1 otwórz nawias ostrokątny y otwórz nawias ostrokątny y2 dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów należy do rozważanej dziedziny cudzysłów zamknij nawias okrągły. Linia 8. case otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły dwukropek. Linia 9. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny przecinek ale jest położony w środku układu współrzędnych cudzysłów zamknij nawias okrągły. Linia 10. case otwórz nawias okrągły x przecinek 0 zamknij nawias okrągły dwukropek. Linia 11. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny przecinek ale jest położony na osi odciętych cudzysłów zamknij nawias okrągły. Linia 12. case otwórz nawias okrągły 0 przecinek y zamknij nawias okrągły dwukropek. Linia 13. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny przecinek ale jest położony na osi rzędnych cudzysłów zamknij nawias okrągły. Linia 14. case otwórz nawias okrągły podkreślnik przecinek podkreślnik zamknij nawias okrągły dwukropek. Linia 15. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny cudzysłów zamknij nawias okrągły.

Funkcja wypisz_informacje przyjmuje trzy parametry: punkt, dziedzina_x, dziedzina_y. Dwa ostatnie mają podane wartości domyślne. Jeśli przy wywoływaniu funkcji do argumentów nie zostaną przekazane nowe wartości, funkcja zostanie wywołana z wartościami domyślnymi.

Widać to przy wywołaniach funkcji – funkcja wypisz_informacje wywoływana jest z jednym argumentem (dwa pozostałe mają przypisane wartości domyślne).

Wartości przekazane do funkcji są krotkami.

W programie definiujemy pewną dziedzinę, która ograniczona jest podanymi wartościami. Zwizualizujmy ją.

RBz8IEkoVJ81A1

Moglibyśmy zdefiniować dwa główne przypadki:

  • Punkt należy do rozważanej dziedziny.

  • Punkt nie należy do rozważanej dziedziny.

Jeśli punkt miałby należeć do dziedziny, wartość współrzędnej x musiałaby mieścić się w następującym przedziale [-9, -1], a wartość współrzędnej y musiałaby zawierać się w następującym przedziale [-4, -1]:

Linia 1. case otwórz nawias okrągły x przecinek y zamknij nawias okrągły if x1 otwórz nawias ostrokątny x otwórz nawias ostrokątny x2 and y1 otwórz nawias ostrokątny y otwórz nawias ostrokątny y2 dwukropek.

Gdyby punkt nie znajdował się w tym przedziale, nie należałby do dziedziny:

Linia 1. case otwórz nawias okrągły x przecinek y zamknij nawias okrągły if not otwórz nawias okrągły x1 otwórz nawias ostrokątny x otwórz nawias ostrokątny x2 and y1 otwórz nawias ostrokątny y otwórz nawias ostrokątny y2 zamknij nawias okrągły dwukropek.

Jednak to niejedyny przypadek, jaki możemy zdefiniować. Pozostałe:

  • Punkt leży na osi rzędnych.

  • Punkt leży na osi odciętych.

  • Punkt leży w środku układu współrzędnych.

Jeśli punkt miałby leżeć na osi rzędnych, jego pierwsza współrzędna musiałaby wynosić 0.

Linia 1. case otwórz nawias okrągły 0 przecinek y zamknij nawias okrągły dwukropek.

Jeśli punkt miałby leżeć na osi odciętych, jego druga współrzędna musiałaby wynosić 0.

Linia 1. case otwórz nawias okrągły x przecinek 0 zamknij nawias okrągły dwukropek.

Jeśli punkt miałby leżeć w środku układu współrzędnych, obie jego współrzędne musiałyby wynosić 0.

Linia 1. case otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły dwukropek.

Wiemy, że w przypadku instrukcji match/case program kończy działanie instrukcji, kiedy zostanie spełniony pierwszy warunek. Musimy zatem odpowiednio zaplanować ułożenie warunków.

Zacznijmy od sprawdzenia, czy punkt należy do dziedziny. Zatem to ten warunek zostanie zapisany jako pierwszy.

Następnie sprawdźmy, czy punkt leży w środku układu współrzędnych, na rzędnej lub odciętej. Zapiszmy kolejne warunki.

Warto pamiętać, że trzy wspomniane wcześniej przypadki odnoszą się do sytuacji, w której punkt nie należy do dziedziny, ale za to leży na osi współrzędnych. To rozróżnienie również powinno znaleźć się w komunikatach wyświetlanych przez program.

Sprawdziliśmy kilka konkretnych przypadków. Weźmy jednak pod uwagę również taką sytuację, w której punkt nie należy do dziedziny, nie leży w środku układu współrzędnych ani na żadnej osi.

Linia 1. def wypisz podkreślnik informacje otwórz nawias okrągły punkt przecinek dziedzina podkreślnik x znak równości otwórz nawias okrągły minus 9 przecinek minus 1 zamknij nawias okrągły przecinek dziedzina podkreślnik y znak równości otwórz nawias okrągły minus 4 przecinek minus 1 zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. x1 przecinek x2 znak równości dziedzina podkreślnik x. Linia 3. y1 przecinek y2 znak równości dziedzina podkreślnik y. Linia 5. match punkt dwukropek. Linia 6. case otwórz nawias okrągły x przecinek y zamknij nawias okrągły if x1 otwórz nawias ostrokątny x otwórz nawias ostrokątny x2 and y1 otwórz nawias ostrokątny y otwórz nawias ostrokątny y2 dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów należy do rozważanej dziedziny cudzysłów zamknij nawias okrągły. Linia 8. case otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły dwukropek. Linia 9. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny przecinek ale jest położony w środku układu współrzędnych cudzysłów zamknij nawias okrągły. Linia 10. case otwórz nawias okrągły x przecinek 0 zamknij nawias okrągły dwukropek. Linia 11. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny przecinek ale jest położony na osi odciętych cudzysłów zamknij nawias okrągły. Linia 12. case otwórz nawias okrągły 0 przecinek y zamknij nawias okrągły dwukropek. Linia 13. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny przecinek ale jest położony na osi rzędnych cudzysłów zamknij nawias okrągły. Linia 14. case otwórz nawias okrągły podkreślnik przecinek podkreślnik zamknij nawias okrągły dwukropek. Linia 15. print otwórz nawias okrągły cudzysłów Punkt dwukropek cudzysłów przecinek punkt przecinek cudzysłów nie należy do dziedziny cudzysłów zamknij nawias okrągły.

Przetestujmy działanie programu dla następujących punktów:

Linia 1. minus 5 przecinek minus 3. Linia 2. minus 12 przecinek 2. Linia 3. 0 przecinek 0. Linia 4. 3 przecinek 0. Linia 5. 0 przecinek 2.

Nanieśmy je na wizualizację:

RmRhWoWguthHB1

Wywołajmy funkcję z nimi jako argumentami:

Linia 1. wypisz podkreślnik informacje otwórz nawias okrągły otwórz nawias okrągły minus 5 przecinek minus 3 zamknij nawias okrągły zamknij nawias okrągły. Linia 2. wypisz podkreślnik informacje otwórz nawias okrągły otwórz nawias okrągły minus 12 przecinek 2 zamknij nawias okrągły zamknij nawias okrągły. Linia 3. wypisz podkreślnik informacje otwórz nawias okrągły otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły zamknij nawias okrągły. Linia 4. wypisz podkreślnik informacje otwórz nawias okrągły otwórz nawias okrągły 3 przecinek 0 zamknij nawias okrągły zamknij nawias okrągły. Linia 5. wypisz podkreślnik informacje otwórz nawias okrągły otwórz nawias okrągły 0 przecinek 2 zamknij nawias okrągły zamknij nawias okrągły.

Wynik programu:

Linia 1. Punkt dwukropek otwórz nawias okrągły minus 5 przecinek minus 3 zamknij nawias okrągły należy do rozważanej dziedziny. Linia 2. Punkt dwukropek otwórz nawias okrągły minus 12 przecinek 2 zamknij nawias okrągły nie należy do dziedziny. Linia 3. Punkt dwukropek otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły nie należy do dziedziny przecinek ale jest położony w środku układu współrzędnych. Linia 4. Punkt dwukropek otwórz nawias okrągły 3 przecinek 0 zamknij nawias okrągły nie należy do dziedziny przecinek ale jest położony na osi odciętych. Linia 5. Punkt dwukropek otwórz nawias okrągły 0 przecinek 2 zamknij nawias okrągły nie należy do dziedziny przecinek ale jest położony na osi rzędnych.
Polecenie 1

Porównaj wynik programu z wizualizacją.

Słownik

obiekt niezmienny
obiekt niezmienny

(ang. immutable) obiekt, który po stworzeniu nie może być modyfikowany.

palindrom
palindrom

ciąg znaków, który brzmi tak samo czytany w obu kierunkach (od strony lewej do prawej i wspak)

wyrażenie indeksujące
wyrażenie indeksujące

(ang. slice) zawarte w nawiasach kwadratowych wyrażenie, które pozwala określić wybraną część sekwencji; może ono mieć postać [start:koniec:krok]; wyrażenie indeksujące zwraca wycinek, zaczynający się od argumentu start, następnie zwiększając indeks o krok, aż do przekroczenia lub wyrównania wartości koniec; nieprzekazanie argumentu start skutkuje tym, że zaczynamy wycinek od początku sekwencji;  podobnie, gdy nie przekażemy argumentu koniec, to górnym ograniczeniem wycinka będzie ostatnia wartość; wartość domyślna dla parametru krok to jeden; lista w języku Python może być indeksowana od tyłu; ostatnia wartość listy jest dostępna pod indeksem -1, przedostatnia pod -2 itd.; argument krok również może przyjąć wartość ujemną, wtedy wartość domyślna parametru start jest równa -1, np. dla [::-1] otrzymamy listę w odwrotnej kolejności