RCTU8NHXC4TDV
Wąż pije kawę w kubku z napisem Witaj świecie

PYI_RY_W13_M04 Instrukcja warunkowa

Obraz wygenerowany przez sztuczną inteligencję Canva.ai
Źródło: domena publiczna.

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.