Instrukcje warunkowe¶
Instrukcja warunkowa if wykonuje to albo tamto w zależności od warunku, jak widać na poniższym przykładzie:
Na instrukcję warunkową składa sie słowo kluczowe if, po którym następuje warunek logiczny. Blok kodu wykonywanego warukowo tradycyjnie otwiera dwukropek. Instrukcja warunkowa może być bardzo rozbudowana, o operacjach na zmiennych logicznych przeczytasz tutaj
Oczywiście wykorzystany powyżej warunek 2==2 jest zawsze prawdziwy i program ten za każdym razem wykonuje to samo (równie dobrze można napisać: if True:). Poniższy przykład jest już nieco ciekawszy - sprawdza, czy podana wartość jest parzysta:
Teraz przejdźmy do trudniejszego przykładu. Mamy 3 liczby: x1, x2 oraz x3 i chcemy dowiedzieć się, która z nich jest największa.
Program ten wykorzystuje podwójnie zagnieżdżone warunki. Najpierw sprawdza, czy x1 > x2. Jeżeli dodatkowo x1>x3, to x1 musi być największa. Jeżeli pierwszy warunek jest spełniony a drugi nie, to największe musi być x3. W Pythonie istnieje również instrukcja elif, która pozwoli nam nieco inaczej zapisać powyższy program:
Operator trójargumentowy¶
W niektórych językach programowania dostępny jest też tak zwany operator trójargumentowy który w zasadzie jest zwięźle zapisaną instrukcją if. Operator ten zwraca pierwszą wartość, jeżeli podany warunek jest spełniony a drugą wartość - jeżeli nie jest. W Pythonie wyrażenie to ma następującą, dość intuicyjną postać: wynik = wartosc_1 if warunek else wartosc_2. Zauważ, że w odróżnieniu od instrukcji warunkowej, tu nie pojawia się znak :. Możemy teraz wykorzystać operator trójargumentowy do rozwiązania naszego problemu znalezienia maksymalnej wartości z pośród 3 zmiennych:
Powyższe rozwiązanie jest zwięźlejsze od poprzedniego. Wykorzystaliśmy tu pewien trick: tworzymy tymczasową zmienną max_val, która przechowuje wartść maksymalną znalezioną w pierszym porównaniu dwóch zmiennych. Następnie porównujemy tą (chwilowo) maksymalną wartość z trzecią wartością. Trick ten bardzo się przydaje, kiedy liczb do porównania jest znacznie więcej, np cała lista:
Instrukcje wielokrotnego wyboru¶
Pojedyncza instrukcja if sprawdza jeden warunek a dalszy bieg programu może pójść tylko dwiema drogami: tą w sekcji if albo tą w sekcji else. Trzeciej drogi nie ma. Co zrobić, jeżeli mamy więcej możliwości do wyboru? Wiele języków programowania oferuje instrukcję switch ... case, w Pythonie jej jednak nie ma. Musimy sobie radzić, stosując wielokrotnie elif. 1 W poniższym przykładzie rozpatrujemy 4 możliwości L (jak lewo), P (prawo), G (góra) i D (dół). Może to być np. fragment gry, w której użytkownik porusza swoim awatarem wciskając odpowiednie klawisze na klawiaturze:
Początkowe położenie gracza to 0,0. Ruch w górę zwiększa y o 1, ruch w lewo zmniejsza x o jeden i tak dalej. Przykład 3.6 rozwiązuje tylko problem jednego kroku, rozbudujemy go niedługo.
Uwaga
Pisząc instrukcję wielokrotnego wyboru powinniśmy pamiętać o rozpatrzeniu “nieprzewidzianego” przypadku - w tym przypadku litery innej niż L, P, G czy D.
Instrukcje break, continue, pass¶
Czasem zdarza się, że chcemy przerwać pętlę przed końcem zaplanowanych iteracji. W zależności od potrzeb, stosujemy w takim przypadku instrukcje break bądź continue.
Instrukcja break
Instrukcja break definitywnie kończy pętlę w której się znajduje i tylko tą. Instrukcja ta jest bardzo przydatna w przypadku, kiedy z góry nie można okreslić końca programu. Rozbudujmy przykład 3.6, umożliwiając chodzenie po planszy:
W linii 8 pojawiła się nowa możliwość - klawisz "Q" przerywa pętlę za pomocą instrukcji break.
Zauważ też, że program działa w nieskończonej pętli while True:.
Instrukcja continue
Instrukcja continue kończy tylko bieżące okrążenie pętli i natychmiast zaczyna kolejne. Instrukcje znajdujące się poniżej continue nie zostaną wykonane. Ilustruje to poniższy przykład:
Instrukcja pass
A co robi instrukcja pass? Absolutnie nic! Przyjrzyj się poniższemu przykładowi:
Instrukcję pass stosujemy najczęściej wtedy, kiedy nie mamy pomysłu na nic lepszego. Na przykład,
kiedy masz już napisaną pierwszą linijkę pęli (czyli instrukcję for) i chcesz koniecznie sprawdzić, czy ona działa.
Coś jednak trzeba w tej pętli wpisać - pętla musi zawierać co najmniej jedną instrukcję. Może to być właśnie
pass, (choć akurat tu można np wpiać print("hello"))
Praca domowa
Napisz program, który będzie sprawdzał, czy podana liczba jest rokiem przestępnym czy nie. Jak łatwo się dowiedzieć z Wikipedii, latami przestępnymi są te, których numeracja:
jest podzielna przez 4 i niepodzielna przez 100 lub
jest podzielna przez 400
Dotychczas według tej reguły lata 1600 i 2000 były przestępnymi, a lata 1700, 1800, 1900 nie. W przyszłości rok 2100 nie będzie rokiem przestępnym.
Przypisy
- 1
Innym, bardzo eleganckim rozwiązaniem problemu wielokrotnego wyboru jest zastosowanie słownika, opisanego w rozdziale o strukturach danych