Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Krótkie wprowadzenie do konstrukcji warunkowych w Pythonie.

by
Difficulty:BeginnerLength:ShortLanguages:
This post is part of a series called A Smooth Refresher To Python.
A Smooth Refresher on Python's Tuples
A Smooth Refresher on Python's Loops

Polish (Polski) translation by Agnieszka Górczyńska (you can also view the original English article)

Życie polega na podejmowaniu właściwych decyzji, programy nie są tutaj wyjątkiem. Ostatecznie programujemy po to, aby usprawnić pewne aspekty naszego życia. Zatem efektów podejmowanych przez nas decyzji możemy spodziewać się również w tworzonych programach.

I to jest właśnie moment, w którym do gry wkraczają konstrukcje warunkowe. Podejmowanie decyzji odbywa się poprzez logikę kontrolującą przepływ działania programu. Do konstrukcji warunkowych w Pythonie zaliczamy polecenia if, elifelse.

Mógłbyś w tym miejscu zapytać, czym tak naprawdę jest konstrukcja warunkowa? Tego rodzaju konstrukcja sprawdza, jaka jest wartość podanego wyrażenia, prawda (true) lub fałsz (false). Na tej podstawie podejmowany jest kolejny krok.

Programy rozgałęzione

W przeciwieństwie do programów liniowych, w których poleceniasą wykonywane w kolejności ich występowania, programy rozgałęzione pozwalają na wykonywanie poleceń nie w kolejności ich występowania w kodzie, lecz w oparciu o pewną decyzję.  Wspomniane wcześniej konstrukcje warunkowe są uważane za programy rozgałęzione. W przypadku wykonania polecenia warunkowego, działanie programu jest kontynuowane od wiersza znajdującego się po tym poleceniu warunkowym.

Struktura konstrukcji warunkowej

W tej sekcji przedstawię poszczególne komponenty tworzące konstrukcję warunkową. W zasadzie konstrukcja warunkowa składa się z następujących elementów:

  • wyrażenia przyjmującego wartość prawdy lub fałszu;
  • bloku kodu wykonywanego, gdy sprawdzane wyrażenie jest prawdziwe;
  • opcjonalnego bloku kodu wykonywanego, gdy sprawdzane wyrażenie jest fałszywe.

Zatem konstrukcja warunkowa w Pythonie przedstawia się następująco:    

W powyższym fragmencie kodu test to wyrażenie boolowskie, które może przyjąć wartość prawda lub fałsz. Innymi słowy polecenie warunkowe umożliwia sprawdzenie prawdziwości pewnego stwierdzenia. Spójrz na prosty przykład omówionej powyżej struktury:

Jakie będą dane wyjściowe tego fragmentu kodu? Nie zwlekaj i sprawdź!

Warto w tym miejscu pokrótce wspomnieć o wcięciach (spacjach) używanych w Pythonie zamiast nawiasów klamrowych znanych z innych języków programowania, na przykład C. Co by się stało, gdyby w powyższym fragmencie kodu ostatnie polecenie print zostało zapisane wraz z takim samym wcięciem, jak wcześniejsze polecenie print (w bloku else)? Innymi słowy, co się stanie, gdy wspomniane polecenie zapiszemy w poniższy sposób? 

W tym przypadku polecenie print 'That\'s it!' zostanie uznane za fragment bloku kodu else.

To tylko przykład pokazujący, że składnia w Pythonie opiera się w znacznym na wcięciach. Jeśli programujesz w Pythonie, od czasu do czasu możesz spotykać się błędami wynikającymi z nieprawidłowego stosowania wcięć w kodzie:

IndentationError: expected an indented block

Zagnieżdżone konstrukcje warunkowe

Mówimy, że konstrukcja warunkowa jest zagnieżdżona, gdy blok kodu true lub false (na przykład else) zawiera kolejną konstrukcję warunkową. Spójrz na poniższy przykład.

W tym przypadku mówimy o zagnieżdżonej konstrukcji warunkowej, ponieważ pierwsze polecenie if zawiera kolejne polecenie if. Ponownie zwróć uwagę na wcięcia kodu, które mają znaczenie kluczowe podczas programowania w Pythonie. Można wręcz stwierdzić, że wcięcia mają znaczenie krytyczne w Pythonie.

Złożone wyrażenia boolowskie

Jak zapewne pamiętasz, wcześniej wspominałem, że test wkonstrukcji warunkowej jest wyrażeniem boolowskim. Czasem warunek może wymagać więcej niż jednego wyrażenia boolowskiego. W takim przypadku mamy do czynienia ze złożonym wyrażeniem boolowskim.

Spójrz na przykład, w którym szukamy najmniejszej z trzech podanych liczb.   Zwróć uwagę, że pierwszy warunek to złożone wyrażenie boolowskie.

W powyższym fragmencie kodu, po raz pierwszy w tymartykule użyłem trzeciej konstrukcji warunkowej, czyli polecenia elif będącego skrótem od else if

Użyłem także operatora boolowskiego and. Dlatego też wszystkie sprawdzane wyrażenia muszą przyjąć wartość true, aby można było wykonać następne polecenie w kodzie. W poniższej tabeli znajdziesz krótkie podsumowanie operatorów boolowskich używanych w Pythonie.

Operator boolowski Opis
or Kolejne polecenie zostanie wykonane, jeśli wyrażenie jest prawdziwe.
and  Kolejne polecenie zostanie wykonane, jeśli wszystkie wyrażenia są prawdziwe.
not Jeżeli wyrażenie jest fałszywe, zostanie uznane za prawdziwe i na odwrót.

W przypadku warunku zawierającego różne rodzaje wymienionych operatorów, kolejność ich wykonywania jest następująca: najpierw  or, następnie and i później not.

Spójrzm na kolejny przykład pokazujący, jak  można używać operatorów boolowskich w listach:

Czy zauważyłeś, w jaki sposób użyliśmy operatora not w tym przykładzie? Jak zapewne pamiętasz, aby wykonać blok kodu wpoleceniu if, sprawdzane wyrażenie musi być prawdziwe. W omawianym przykładzie wyrażenie przyjmuje wartość false, ponieważ liczba 13 nie znajduje się na liście. Jednak po uruchomieniu programu zauważysz, żepolecenie print zostało wykonane. Jak to możliwe? Polecenie zostało wykonane, ponieważ użyliśmy operatora not, który odwraca początkowo określoną wartość sprawdzanego wyrażenia. W naszym przypadku wartość false została zastąpiona przez true.

Python i konstrukcja switch

Prawdopodobnie czekasz na przykład pokazujący użycie konstrukcji switch. Jeżeli poznawałbyś konstrukcje warunkowe w innym języku programowania, prawdopodobnie zobaczyłbyś przykłady pokazujące piękno poleceń switch. Powód, dla którego dotąd nie wspomniałem o tego rodzaju poleceniach jest banalny: w Pythonie nie ma konstrukcjiswitch!

Jeśli chcesz dowiedzieć się więcej na temat konstrukcji warunkowych w Pythonie, zajrzyj do dokumentacji.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.