Zajęcia 3 - Instrukcje warunkowe

Zajęcia 3 - Instrukcje warunkowe
Photo by Emily Morter / Unsplash

Instrukcji warunkowych używa się by spowodować jakąś akcję / wywołać jakiś efekt pod jakimś warunkiem. W tym celu używa się operatorów takich jak:

Operator Opis
== jest równe (identyczne)
!= nie jest równe (różni się)
> jest większe
>= większe lub równe
< mniejsze
<= mniejsze lub równe

Nowością dla mnie było to, że w Pythonie porównywanie stringów nie wyrzuca błędu. Dzieje się tak dlatego, że Python przerabia każdy znak na liczbę według ściśle określonej tablicy znaków (unicode) i porównuje właśnie te liczby.

if, elif i else

Czasem komputer widzi więcej niż człowiek. Tak właśnie jest z if i elif - dla niewprawionego oka różnica może nie istnieć, a jednak!

Kup mleko, a jeśli będą jajka to weź 10.

Na czym więc polega różnica? Gdybyśmy używali jedynie instrukcji if program sprawdzał by każdy warunek osobno, niezależnie od wyniku poprzedniego warunku - to tak jakbyśmy znaleźli idealną sukienkę, ale jeszcze wpadli do 5 innych sklepów żeby upewnić się, czy aby na pewno ta już znaleziona jest idealna. Można? Można. Ale po co.

W momencie gdy wprowadzimy instrukcje elif/else porównania wykonują się jedynie do momentu znalezienia ideału. Cóż za oszczędność czasu i energii!

A co, gdy chcemy spasować?

Gdy z jakiegoś powodu chcemy aby jakaś instrukcja nie wywoływała żadnego efektu, to nie możemy ghostować komputera. Należy go uprzedzić, że w tym konkretnym przypadku nie jesteśmy zainteresowani żadną akcją.

Na szczęście Python jest gotowy na taką okazję!

ilosc_mleka = 1

if sa_jajka:
  ilosc_mleka = 10
else:
  pass

Operatory logiczne

Warto w tym miejscu przypomnieć sobie o żelaznej logice, a zwłaszcza o operatorach and i or.

X and Y dają True, tylko jeśli obie są True. Jeśli jedna z nich jest False to całe wyrażenie jest False. Jeśli X chce jechać z góry, a Y nad może, to nie wylądują w Poznaniu, tylko zostaną w domu (chyba, że wcześniej już mieszkali w Poznaniu).

Jeśli natomiast X chce jechać albo nad morze or w góry, to sprawa przedstawia się zupełnie inaczej. Wystarczy, że razem z Y odwiedzą tylko jedno miejsce, żeby poziom szczęścia był na True. Jednak jeśli nie pojadą ani tu ani tu to wyjdzie z tego jedno wielkie rozczarowanie w postaci False.

Stanowczo zaprzeczam

Czyli co jeśli nie mogę się zdecydować? Zawsze można użyć operatora not. Dzięki niemu zmieniamy jego wartość logiczną na przeciwną.

kto_zarzadza_pieniedzmi= "ja"

if not kto_zarzadza_pieniedzmi == "ja":
  pring("trzeba coś zmienić")
else:
  print("wszystko jest w najlepszym porządku")