6. Instrukcje warunkowe - majsylw/Introduction-to-programming-in-python GitHub Wiki
W programie często musimy obsłużyć następujący scenariusz: wykonać kod, ale tylko pod jakimś warunkiem, w przeciwnym wypadku albo nie robić nic, albo wręcz wykonać zupełnie odmienny kod. W tym celu stworzono instrukcje warunkowe.
Instrukcja warunkowa if
W języku python instrukcja warunkowa ma postać:
if warunek:
instrukcja1
instrukcja2
...
Warunek występuje bezpośrednio po instrukcji sterującej if
i nie jest zamknięty w okrągłych nawiasach (w przeciwności do większości języków programowania), po nim następuje znak :
. W pythonie instrukcje znajdujące się w instrukcji warunkowej są wcięte, jak już wspominałam o tym w przypadku pierwszej lekcji. Oczywiście tworząc warunek możemy korzystać ze wszystkich dobrodziejstw jakie stwarzają operatory porównania oraz logiczne, które przedstawiłam w przypadku wcześniejszych lekcji.
Zobaczmy tę konstrukcję na prostym przykładzie:
wiek = 37
if wiek >= 18:
print("W Polsce ta osoba jest pełnoletnia!")
## W Polsce ta osoba jest pełnoletnia!
Sprawdźmy jeszcze co się stanie, gdy warunek nie zostanie spełniony:
wiek = 10
if wiek >= 18:
print("W Polsce ta osoba jest pełnoletnia!")
## Nie zostanie wypisane nic
Instukcja if...else
Co, gdy chcemy wykonać pewien kod, gdy warunek nie jest spełniony? Wtedy z pomocą przychodzi nam słowo kluczowe else:
if warunek:
instrukcja1
instrukcja2
else: # kod poniżej wykona się, gdy warunek nie będzie spełniony
instrukcja3
instrukcja4
Teraz możemy rozbudować nasz wcześniejszy program:
wiek = 15
if wiek >= 18:
print("W Polsce osoba jest pełnoletnia!")
else:
print("W Polsce osoba jest niepełnoletnia!")
## W Polsce osoba jest niepełnoletnia!
Instrukcja if...elif..else
Jednak to jeszcze nie koniec! W języku Python, w przeciwności do innych języków programowania, istnieje specjalna konstrukcja, gdy chcemy obsługiwać więcej, niż 3 przypadki:
if warunek:
instrukcja1
instrukcja2
elif warunek2: # gdy warunek nieprawdziwy, sprawdz warunek2
instrukcja3
instrukcja4
elif warunek3: #gdy warunek2 nieprawdziwy, sprawdz warunek3
instrukcja5
instrukcja6
else: #gdy zaden z warunkow nie byl prawdziwy
instrukcja7
instrukcja8
Rozbudujmy jeszcze bardziej nasz przykład:
wiek = 15
if wiek >= 18:
print("Ta osoba może pić alkohol.")
elif wiek >= 14:
print("Ta osoba może wyrobi prawo jazdy kategorii AM.")
else:
print("Owa osoba nie może pić alkoholu ani wyrobić prawa jazdy kategorii AM")
## Ta osoba może wyrobi prawo jazdy kategorii AM.
Operator warunkowy w Pythonie
Jeśli nie jest to twoja pierwsza styczność z programowaniem może spotkałeś się już z jednolinijkowym trójargumentowym operatorem warunkowym, powszechnie znanym w języku C/C++, którego składnia jest następująca:
zmienna = warunek ? wyrażenie1 : wyrażenie2;
// daje taki sam rezultat, co
if (warunek)
zmienna = wyrażenie1
else
zmienna = wyrażenie2;
W języku Python też istnieje taka konstrukcja, jednak bardziej naśladuje ona język naturalny i prezentuje się tak:
wyrażenie1 if warunek else wyrażenie2
# Przykład
i = 5 if 9 > 4 else 12
print(i) # zmienna i przyjmie wartość 5, gdyż 9 jest większe od 4, czyli warunek jest prawdziwy
is
oraz in
Operatory Za pomocą operatora in
możesz sprawdzić, czy konkretny obiekt znajduje sie w tablicy lub innym obiekcie gromadzącym inne obiekty, np:
imie = "jabłko"
if imie in ["jabłko", "banan"]:
print("W koszyku masz jabłko lub banana.")
Operator is
, w przeciwieństwie do operatora ==
, nie sprawdza, czy zmienne mają taką samą wartość, ale czy wskazują na ten sam obszar w pamięci komputera. Przykładowo:
x = [1,2,3]
y = [1,2,3]
print x == y # Wypisze True
print x is y # Wypisze False
tablica = [1, 2, 3]
tablica2 = ['a', 'b', tablica]
print tablica == tablica2[2] # True
print tablica is tablica2[2] # True
# Ponizej dowod na to, ze is mowi prawde
tablica.append(4) # Dodajemy do tablicy liczbe 4
print tablica2[2] # wypisze [1, 2, 3, 4]
Ponieważ tablica
i tablica2
odnoszą się do tego samego obiektu, zmiana jednej oznacza zmianę drugiej. Niestety istnieje w tym miejscu duże ryzyko pomyłki. Stosując proste podstawienie tablica traci kontakt ze starszym obiektem i zapisuje na jego miejscu całkiem nowy i niezależny.