Przejdź do treści głównej

Podejmowanie decyzji

Porównania

Żebyśmy mogli podjąć w programie jakąś decyzję musimy najpierw sformułować pytanie na które da się jednoznacznie odpowiedzieć tak/nie (prawda / fałsz) .

Najprostszym podejściem do tego jest wykonanie jakiegoś porównania np. czy 12 jest większe od 6.

Podstawowe porównania

Operator Pytanie Przykład
== równe? x == y
!= nierówne? x != y
> większe? x > y
>= większe lub równe? x >= y
< mniejsze? x < y
<= mniejsze lub równe? x <= y

W Pythonie jest podwójny znak równości (==) służy do porównania czy dane wartości są równe, podczas gdy pojedynczy = służy do przypisania wartości.

Porównania tekstów

O dziwo w Pythonie porównanie tekstów są dozwolone np.

"pies" > "kot"

Takie porównanie zwróci nam wartość True.

Jak Python doszedł do takiego wniosku? Każdy znak jest jakąś liczbą w ściśle określonej tablicy znaków (w tym wypadku unicode). Python porównuje numer danej litery dla każdego znaku w tekście i na tej podstawie podejmuje decyzję.

Warunki i bloki kodu

Mając przygotowane pytanie na które da się odpowiedzieć tak/nie, prawda/fałsz możemy wykonać jakąś akcję wg schematu:

A = 12
B = 6

jeżeli A > B:
    wykonaj coś1
a jeżeli A == B:
    wykonaj coś2
w przeciwnym wypadku: (jeśli żaden inny warunek nie został spełniony)
    wykonaj coś3

Tłumacząc to na Pythona wygląda to tak:

A = 12
B = 6

if A > B:
    zrob_cos(1)
elif A==B:
    zrob_cos(2)
else:
    zrob_cos(3)

Należy pamiętać o wcięciach(!) - decydują one o tym co Python wykona po podjęciu decyzji np. w powyższym przykładzie jeśli A jest większe od B to uruchomi się jedynie funkcja (fikcyjna) zrob_cos(1).

Czemu warto korzystać z elif

Teoretycznie można by było w powyższym przykładzie użyć tylko i wyłącznie if - użytkownik programu nie zauważyłby raczej różnicy.

Dla komputera jednak różnica jest spora - używając tylko if wykonałby każde z porównań niezależnie od wyniku poprzedniego.

Jeśli korzystamy z elif / else porównania wykonują się do momentu uzyskania w którymś odpowiedzi Prawda (True) - pozostałe wtedy są pomijane. Dzięki temu minimalizujemy ilość niepotrzebnie wykonywanych operacji.

Stąd też jeśli wykonujemy jakieś porównania, które są z sobą powiązane (zależą od siebie) należy korzystać z elif i else.