Instrukcje warunkowe w Pythonie — krok po kroku
W tej lekcji rozbijemy instrukcje warunkowe na części i pokażemy różne sposoby zapisu — w tym tzw. operator warunkowy (ternary) oraz łańcuchowe porównania. Wyjaśnienia będą proste i krok po kroku, z krótkimi przykładami, żeby łatwiej zrozumieć, jak to działa.
Co robi if?
- if sprawdza pojedynczy warunek. Jeśli jest prawdziwy (True), wykonuje blok kodu pod nim.
- Możesz dodać dowolną liczbę elif (skrót od "else if") — każdy sprawdza kolejny warunek, ale tylko pierwszy prawdziwy elif zostanie wykonany.
- else to ramka na wszystko inne — wykona się, gdy żaden z wcześniejszych warunków nie był prawdziwy.
- Ważne: kolejność elif ma znaczenie — warunki sprawdza się od góry do dołu.
Przykład prostego if/elif/else (omówiony krok po kroku)
punkty = 76
if punkty >= 90:
ocena = "A"
elif punkty >= 75:
ocena = "B"
elif punkty >= 50:
ocena = "C"
else:
ocena = "D"
print("Twoja ocena:", ocena)
- Krok 1: Sprawdzamy, czy punkty >= 90. Jeśli tak, ustawiamy ocena = "A" i pomijamy resztę elif i else.
- Krok 2: Jeśli pierwszy warunek był fałszywy, sprawdzamy następny: punkty >= 75. Ponieważ 76 spełnia ten warunek, przypisujemy "B" i kończymy instrukcję warunkową.
- Gdyby miał 49 punktów, żaden z powyższych warunków nie byłby prawdziwy i wykonane zostałoby else, przypisując "D".
Operatory logiczne: and, or, not
- and zwraca True tylko wtedy, gdy wszystkie połączone warunki są True.
- or jest True, jeśli przynajmniej jeden z warunków jest True.
- not odwraca wartość logiczną (True → False, False → True).
Przykład użycia operatorów logicznych:
x = 7
# Sprawdzamy czy x jest parzyste i jednocześnie większe od 10
if x % 2 == 0 and x > 10:
print("parzyste i > 10")
else:
print("nie spełnia obu warunków")
# Sprawdzamy czy x jest mniejsze niż 5 lub większe niż 6
if x < 5 or x > 6:
print("x < 5 lub x > 6")
# Odwrócenie warunku
if not (x % 2 == 0):
print("x jest nieparzyste")
Łańcuchowe porównania (chained comparisons)
- Możesz łączyć porównania tak, jak w matematyce: 0 < x < 10.
- To jest równoważne zapisowi (0 < x) and (x < 10), ale Python wykonuje to bardziej elegancko i czytelnie.
- Możesz też napisać -5 <= y <= 5 — to sprawdza, czy y jest między -5 i 5 włącznie.
Przykłady:
x = 5
if 0 < x < 10:
print("x jest między 0 i 10 (wyłącznie)")
y = 3
if -5 <= y <= 5:
print("y jest pomiędzy -5 a 5 (włącznie)")
Ternary (wyrażenie warunkowe) — skrócony zapis
- Składnia: a if warunek else b. Zwraca a gdy warunek jest prawdziwy, w przeciwnym razie zwraca b.
- Użyteczne, gdy chcesz przypisać wartość w jednej linijce zamiast pisać pełne if/else.
Przykład ternary:
x = 5
parzysta = "tak" if x % 2 == 0 else "nie"
print(parzysta) # wydrukuje "nie" ponieważ 5 jest nieparzyste
Dodatkowe uwagi i wskazówki
- W warunkach możesz używać nawiasów, by poprawić czytelność: if (a > b) and (c < d):.
- Pamiętaj o priorytecie operatorów: not ma wyższy priorytet niż and, które ma wyższy priorytet niż or. Jeśli jest wątpliwość, użyj nawiasów.
- Sprawdzaj przypadki brzegowe (np. równe 12, 13, 17, 18, 64, 65), by upewnić się, że Twoje warunki pokrywają wszystkie wartości.
Ćwiczenie (nie podaję gotowego rozwiązania — najpierw spróbuj samodzielnie)
Napisz program, który dla podanego wieku użytkownika wypisze kategorię:
- "dziecko" — wiek do 12 (włącznie),
- "młodzież" — 13–17,
- "dorosły" — 18–64,
- "senior" — 65 i więcej.
Wymaganie: użyj if, elif i else. Podpowiedzi:
- Najpierw pobierz wiek od użytkownika i zamień go na liczbę całkowitą (użyj int()).
- Pomyśl o kolejności warunków — sprawdzaj najbardziej specyficzne warunki w odpowiedniej kolejności, żeby uniknąć błędów.
- Przetestuj program kilkoma wartościami: 5, 13, 18, 64, 65.
Jeśli chcesz małą pomoc w formie szkieletu (uzupełnij warunki samodzielnie):
# Szkielet programu — uzupełnij warunki
wiek = int(input("Podaj wiek: "))
if False: # zastąp False odpowiednim warunkiem dla "dziecko"
kategoria = "dziecko"
elif False: # zastąp False warunkiem dla "młodzież"
kategoria = "młodzież"
elif False: # zastąp False warunkiem dla "dorosły"
kategoria = "dorosły"
else:
kategoria = "senior"
print("Kategoria:", kategoria)
Gdy spróbujesz napisać swój kod, przetestuj go na wymienionych przykładach. Jeśli utkniesz, opisz tutaj swój kod i gdzie się zatrzymałeś — pomogę wskazać błąd lub podpowiem kolejny krok, ale nie napiszę całego rozwiązania za Ciebie.