Instrukcje warunkowe

Instrukcje warunkowe pozwalają programowi "reagować" na różne sytuacje.

Weźmy sobie coś prostego na sam początek:

zmienna = 8
if zmienna > 5:
    print "Zmienna jest wieksza niz 5"

Konstrukcja instrukcji warunkowej jest dość logiczna i prosta:

if (czy) dowolne wyrażenie, które zwraca wartość logiczną (warunek jest spełniony):

Następnie robimy wcięcie w kodzie i piszemy co ma się stać jeśli warunek jest spełniony.

Jeśli nasz warunek nie zostanie spełniony również możemy coś zrobić. Odpowiada za to instrukcja "else"

zmienna = 8
if zmienna == 15:
    print "Zmienna jest rowna 15"
else:
    print "Zmienna nie jest rowna 15"

Warto wspomnieć w tym miejscu, że jeśli chcemy sprawdzić czy coś jest równe używamy podwójnego znaku równości (==). Czemu dwóch, a nie jednego? Powód jest prosty, pojedycznym (=) przypisujemy zmiennym wartości, podczas gdy podwójny znak == sprawdza, czy dwie wartości się różnią, bez zmiany ich zawartości.

Jak widać w tym przypadku sprawdzamy czy nasza zmienna jest równa 15, jeśli jest to mówimy że jest, w przeciwnym przypadku mówimy że nie jest równa 15.

Pewnie zastanawiasz się, co w sytuacji kiedy chcemy sprawdzić kilka warunków pod rząd i pewnie masz już na to swój (na razie jeszcze nie idealny) pomysł, który wygląda tak:
 

zmienna = 8
if zmienna == 1:
    print "Wartosc zmiennej to jeden"
else:
    if zmienna == 2:
        print "Wartosc zmiennej to dwa"
    else:
        print "Wartosc zmiennej nie jest ani jeden ani dwa"

Jeśli nie wpadłeś na to, że we wcięciu można zrobić jeszcze jedną instrukcję, która ma wcięcie to musisz wiedzieć, że można to robić. Jest to bardzo częsta sytuacja i kod w praktyce ma wiele poziomów wcięć. Jednak istnieje rozwiązanie powyższego problemu, które jest o wiele bardziej estetyczne: Python daje nam jeszcze jedną instrukcję "elif", dzięki której sprawdzimy kolejne warunki.

zmienna = 8
if zmienna == 5:
    print "Zmienna jest rowna 5"
elif zmienna == 8:
    print "Zmienna jest rowna 8"
elif zmienna > 5:
    print "Zmienna jest rowna 5 ale nie jest rowna 8"
else:
    print "Zmienna jest mniejsza od 5"

To już chyba najbardziej skomplikowany przykład. Jeśli przyjrzysz się warunkom to:

  1. zmienna == 5 jest nieprawdziwy
  2. zmienna == 8 jest prawdziwy
  3. zmienna > 5 jest prawdziwy

Co w tym wypadku się stanie? Zostanie wykonany blok kodu (tzn. to co znajduje się we wcięciu) pod warunkiem który zostanie spełniony jako pierwszy, ponieważ warunki sprawdzane są po kolei a Python jest leniwy i jak uda mu się jakiś znaleźć to reszty już nie sprawdza.

 

Sprawdź czy potrafisz już rozwiązać zadanie Instrukcje warunkowe !