Dataniedziela, 9 sierpnia 2026 Czas08:11:55
← Python — programowanie

Lekcja 3. Instrukcja warunkowa if — if, elif, else w Pythonie

latwy

Po co się tego uczymy?

To pierwszy moment, w którym program przestaje być "listą poleceń wykonywanych od góry do dołu" i zaczyna SAMODZIELNIE PODEJMOWAĆ DECYZJE na podstawie danych. Instrukcja warunkowa pojawia się w niemal każdym zadaniu maturalnym — walidacja danych, klasyfikacja wyników, systemy oceniania.

Teoria

Składnia w Pythonie jest inna niż w C#/Javie — zamiast nawiasów klamrowych { }, Python używa DWUKROPKA : i WCIĘCIA (zwykle 4 spacje), żeby wyznaczyć, co należy do bloku instrukcji if. To NIE jest kwestia stylu — złe wcięcie w Pythonie to BŁĄD SKŁADNIOWY, program się nie uruchomi.

Najprostszy if:

if warunek:
    # wykonuje się TYLKO, gdy warunek == True
    instrukcja

if / else — obsługuje DWIE możliwości: if warunek: ... else: ... — blok else wykonuje się, gdy warunek jest False.

if / elif / else — Python NIE ma słowa else if jak C# — używa skróconego elif ("else if" w jednym słowie). Warunki sprawdzane są PO KOLEI, od góry — wykonuje się TYLKO PIERWSZY pasujący blok, reszta jest pomijana, nawet jeśli też byłaby prawdziwa.

Zagnieżdżone if — instrukcja warunkowa może zawierać KOLEJNĄ instrukcję warunkową w swoim wnętrzu (z dodatkowym poziomem wcięcia) — przydatne, gdy drugi warunek ma sens TYLKO, jeśli pierwszy się spełnił.

Operator trójargumentowy (wyrażenie warunkowe) — Python pozwala zapisać prosty if/else w JEDNEJ linijce: wynik = "parzysta" if liczba % 2 == 0 else "nieparzysta". To skrót przydatny, gdy chcemy przypisać JEDNĄ z dwóch wartości na podstawie warunku, bez pisania wielolinijkowego bloku.

"Prawdziwość" wartości niebędących bool — w warunku if Python akceptuje NIE TYLKO True/False, ale też inne typy: pusty tekst "", liczba 0 i pusta lista [] są traktowane jako "fałszywe" (falsy), a niepusty tekst, niezerowa liczba i niepusta lista jako "prawdziwe" (truthy). To wygodny skrót: zamiast if len(lista) > 0: można napisać po prostu if lista:.

Schemat

if warunek1:
    # A - wykonuje się, gdy warunek1 == True
elif warunek2:
    # B - sprawdzany TYLKO, jeśli warunek1 był False
elif warunek3:
    # C - sprawdzany TYLKO, jeśli warunek1 i warunek2 były False
else:
    # D - gdy ŻADEN z powyższych warunków nie był True

PRZYKŁAD - klasyfikacja oceny:
  ocena == 6  → "Celujący"                (sprawdzone jako pierwsze)
  ocena == 5  → "Bardzo dobry"            (TYLKO jeśli ocena != 6)
  ocena >= 3  → "Zaliczone"               (TYLKO jeśli ocena != 6 i != 5)
  else        → "Niezaliczone"            (żaden warunek nie pasował)

Przykład z życia

System rekrutacyjny na studia sprawdza próg punktowy: if punkty >= 90: przyjety = "tak, z wyróżnieniem"; elif punkty >= 60: przyjety = "tak"; else: przyjety = "nie" — to dokładnie ta sama struktura decyzyjna, której nauczysz się w tej lekcji, tylko zastosowana do prawdziwego, poważnego problemu.

instrukcja_if.py

# Najprostszy if
temperatura = 28
if temperatura > 25:
    print("Jest gorąco!")

# if / else
wiek = int(input("Podaj swój wiek: "))
if wiek >= 18:
    print("Możesz zagłosować.")
else:
    print("Jeszcze nie możesz zagłosować.")

# if / elif / else - kolejność warunków ma znaczenie!
ocena = int(input("Podaj ocenę (1-6): "))
if ocena == 6:
    opis = "Celujący"
elif ocena == 5:
    opis = "Bardzo dobry"
elif ocena >= 3:
    opis = "Zaliczone"
else:
    opis = "Niezaliczone"
print(f"Wynik: {opis}")

# Zagnieżdżone if
if wiek >= 18:
    if wiek >= 65:
        print("Masz prawo do zniżki seniora")
    else:
        print("Jesteś pełnoletni")

# Operator trójargumentowy (jednolinijkowy if/else)
liczba = 7
parzystosc = "parzysta" if liczba % 2 == 0 else "nieparzysta"
print(f"{liczba} jest {parzystosc}")

Komentarz i wyjaśnienie kodu

Zwróć uwagę na KOLEJNOŚĆ warunków w bloku ocena == 6 / == 5 / >= 3 — gdyby warunek ocena >= 3 stał PRZED ocena == 6, to dla oceny 6 program NIGDY nie dotarłby do sprawdzenia "Celujący", bo 6 >= 3 jest prawdziwe i pierwszy pasujący warunek "wygrywa".

W zagnieżdżonym if drugi warunek (wiek >= 65) jest sprawdzany DOPIERO wewnątrz bloku pierwszego if — jeśli wiek < 18, Python nawet nie SPRAWDZI drugiego warunku, bo cały wewnętrzny blok jest pomijany.

Operator trójargumentowy "parzysta" if liczba % 2 == 0 else "nieparzysta" czyta się: "parzysta, JEŚLI liczba%2==0, W PRZECIWNYM RAZIE nieparzysta" — to DOKŁADNIE ta sama logika co wielolinijkowy if/else, tylko zapisana w jednej linijce dla zwięzłości.

Ćwiczenie samodzielne

Uruchom program i sprawdź klasyfikację ocen dla wartości 1-6. Następnie zmodyfikuj kod tak, żeby dla oceny 2 wypisywał "Dopuszczający", a nie wpadał w gałąź else razem z oceną 1.

Plac zabaw — wypróbuj online

Poniższy kod wykonuje się od razu w Twojej przeglądarce — nic nie trzeba instalować. Zmień kod i kliknij „Uruchom”.

PYTHON

Zadania do pracy własnej

  1. Napisz program sprawdzający, czy podana liczba jest dodatnia, ujemna, czy równa zero (trzy różne komunikaty, użyj if/elif/else).

  2. Napisz program klasyfikujący BMI (waga w kg / (wzrost w m)²) na cztery kategorie: poniżej 18.5 — niedowaga, 18.5-24.9 — waga prawidłowa, 25-29.9 — nadwaga, powyżej 30 — otyłość.

  3. Napisz program sprawdzający, czy trzy podane liczby (boki trójkąta) mogą tworzyć trójkąt (suma dwóch krótszych boków musi być większa od najdłuższego), a jeśli tak — czy jest to trójkąt równoboczny, równoramienny, czy różnoboczny. Wykorzystaj zagnieżdżone instrukcje if oraz operatory logiczne z poprzedniej lekcji.

Typowe błędy

Złe wcięcia — w Pythonie wcięcie NIE JEST kosmetyczne, tylko część składni; niespójne mieszanie spacji i tabulatorów albo różna liczba spacji w tym samym bloku spowoduje błąd IndentationError.

Zapominanie dwukropka : na końcu linii if/elif/else — to jeden z pierwszych błędów składniowych, jakie napotka każdy uczeń Pythona.

Zła kolejność warunków w łańcuchu elif — warunek OGÓLNIEJSZY umieszczony PRZED bardziej SZCZEGÓŁOWYM "przechwyci" wszystkie pasujące przypadki, zanim dotrze do tego szczegółowego — zobacz komentarz do kodu powyżej.

Nawiązanie do egzaminu zawodowego

Instrukcja warunkowa to jeden z absolutnie podstawowych elementów sprawdzanych na maturze (Arkusz II) — pojawia się w niemal każdym zadaniu programistycznym. W dziale "Algorytmy i złożoność" zobaczysz if używane wewnątrz dużo bardziej złożonych struktur — np. przy sprawdzaniu znaku funkcji w metodzie bisekcji czy warunku zakończenia w algorytmach sortowania.