Instrukcja warunkowa pozwala na sterowanie programem. W zależności od sytuacji "program podejmuje decyzję", którą część kodu ma wykonać, a którą nie.
Spis treści:
Instrukcja warunkowa if ma postać:
# instrukcje poprzedzające instrukcję if
if warunek lub warunki:
# jeśli warunek jest prawdziwy, to wejdziesz do bloku if
instrukcja_1 # instrukcje należące do if rozpoczynają się od wcięcia
instrukcja_2 # ta instrukcja także należy do bloku if
instrukcja_3 # ta instrukcja nie należy do bloku if
Jeżeli warunek ma wartość logiczną True, to wykonają się instrukcje, które zapisane są po wcięciu i tworzą one blok należący do if'a.
x = 3
if x == 3:
print("tak, to jest trzy")
print("Jeśli nie wierzysz, to patrz: x =",x)
x = 4
if x < 0: # ten warunek jest nieprawdziwy
print("tego tekstu nie zobaczysz") # ta instrukcja się nie wykona
Zasada działania instrukcji warunkowej if opiera się na wartości, jaką przyjmuje warunek. W przypadku True (lub wartości równej 1), instrukcje dla bloku if zostaną wykonane. Oznacza to, że w przypadku zmiennych logicznych można użyć skróconej konstrukcji warunku:
x = True
if x:
print("x ma wartość True")
W tej postaci instrukcji warunkowej, wykona się zawsze dokładnie jeden z dwóch bloków. Jeśli warunek (warunki) mają wartość logiczną True, to wykonają się instrukcje należące do bloku if, w przeciwnym razie do bloku else. Część else jest opcjonalna.
if warunek: # na końcu stawiamy dwukropek
instrukcja_1 # blok if
instrukcja_2 # blok if
itd. #blok if
else: # tu też stawiamy dwukropek
instrukcja_3 # blok else
instrukcja_4 # blok else
Prześledźmy przykład, który sprawdzi, czy podana osoba jest pełnoletnia.
x = int(input("Podaj swój wiek: "))
if x >= 18:
print("jesteś pełnoletni")
else:
print("nie jesteś jeszcze pełnoletni")
Instrukcja warunkowa może mieć wiele instrukcji elif. Każda taka instrukcja posiada warunek do sprawdzenia, a blok do niej należący zaczyna się znakiem dwukropka oraz jest wyróżniony tą samą głębokością wcięcia. Blok instrukcji elif wykona się tylko wtedy, gdy warunek przy niej stojący ma wartość logiczną True, a wszystkie poprzednie warunki miały wartość logiczną False.
instrukcje_poprzedzające_program
if warunek1:
instrukcje_1 # jeśli warunek1 jest prawdziy
elif warunek2:
instrukcje_2 # jeśli warunek1 jest nieprawdziy, a warunek2 jest prawdziwy
elif warunek3:
instrukcje_3 # jeśli warunek1 i warunek2 jest fałszywy, a warunek3 jest prawdziwy
# itd..
else # opcjonalnie
instrukcje_4 #jeśli wszystkie warunki są fałszywe
Zadanie. Tabela poniżej określa taryfikator mandatów w pewnym państwie:
Wykroczenie | Wysokość mandatu |
---|---|
Przekroczenie prędkości do 10 km | 100 |
Przekroczenie prędkości z przedziału [11, 30] | 200 |
Przekroczenie prędkości > 30 | 400 |
Użytkownik podaje liczbę km, jaką przekroczył kierowca. Zadaniem programu jest określenie wysokości mandatu.
Rozwiązanie:
mandat = int(input("Podaj liczbę kilometrów, o jaką przekroczyłeś dozwoloną prędkość: "))
if mandat <= 10:
print("mandat: 100zł")
elif mandat <= 30:
print("mandat: 200zł")
else:
print("mandat: 400zł")
Kolejną opcją instrukcji if jest wykorzystanie operatora in, który pozwala w łatwy sposób sprawdzić, czy dany element występuje w zdefiniowanym wcześniej zbiorze:
x = "ala ma kota"
if "ma" in x:
print("wyraz 'ma' występuje w zdaniu '",x,"'")
x = (1, 2, 3, 12)
if 12 in x:
print("liczba 12 występuje w zbiorze",x)
wyraz 'ma' występuje w zdaniu ' ala ma kota '
liczba 12 występuje w zbiorze (1, 2, 3, 12)
Konstrukcja warunków instrukcji if i elif może być prosta — złożona z jednego warunku lub złożona z kilku warunków połączonych operatorami logicznymi. Popatrzmy na przykład, który sprawdzi, czy dana liczba naturalna dzieli się bez reszty przez 3 lub reszta z dzielenia tej liczby przez 7 jest równa 2:
x = int(input("Podaj liczbę: "))
if x % 3 == 0:
if x % 7 == 2:
print("Liczba spełnia kryteria zadania")
else:
print("Liczba nie spełnia kryteriów z zadania")
else:
print("Liczba nie spełnia kryteriów z zadania")
x = int(input("Podaj liczbę: "))
if x % 3 == 0 and x % 7 == 2:
print("Liczba spełnia kryteria zadania")
else:
print("Liczba nie spełnia ktyteriów z zadania")
Wyrażenie warunkowe (ang. conditional expression) w Pythonie pozwala na krótką i zwięzłą formę instrukcji warunkowych. Wyrażenie to jest nazywane także operatorem trójargumentowym i ma następującą składnię:
x = wartość1 if warunek else wartość2
Działa to w następujący sposób:
Jest to przydatne do skrócenia instrukcji warunkowych w przypadku, gdy chcemy przypisać wartość zmiennej w zależności od spełnienia warunku.
Napisz program, który wypisze tak, jeśli osoba jest pełnoletnia lub nie w przeciwnym razie.
print("tak" if int(input()) >= 18 else "nie")