Python · instrukcje warunkowe

Instrukcje warunkowe w Pythonie — zadania z rozwiązaniami

if, elif, else oraz and i or na znaku liczby, cenie biletu i roku przestępnym. Wartości graniczne, rozwiązania i błędy.

45 minutPoziom podstawowyPliki i rozwiązania

Materiał redakcyjny TablicaPro · liceum i technikum

def przestepny(rok):
    return rok % 4 == 0 and (rok % 100 != 0 or rok % 400 == 0)

print(przestepny(1900))
› False
Rok 1900 nie jest przestępny.

Program, który zawsze robi to samo, szybko się nudzi. Instrukcja if pozwala wybrać działanie zależnie od danych — i dlatego jest pierwszym krokiem do prawdziwych algorytmów. Na tej lekcji uczniowie piszą trzy funkcje: znak liczby, cenę biletu i test roku przestępnego.

Scenariusz jest przeznaczony na 45 minut dla klasy, która zna zmienne, print i podstawy funkcji. Jeśli uczniowie jeszcze nie pisali funkcji, zadania można rozwiązać bez nich, wypisując wynik bezpośrednio — zobacz lekcję o funkcjach.

Przygotowanie stanowisk

Potrzebny jest Python 3 i edytor lub IDLE. Rozpakuj pakiet z sekcji materiałów do osobnego folderu. Program uruchomisz przez Run → Run Module albo poleceniem python start.py, python3 start.py lub py start.py.

Cele i plan lekcji

Po zajęciach uczeń potrafi:

  • zapisać warunek z operatorami ==, !=, <, >, <=, >=;
  • użyć if, elif i else oraz wyjaśnić kolejność sprawdzania;
  • łączyć warunki operatorami and, or, not;
  • przetestować program na wartościach granicznych.
CzasPraca na lekcji
0–5 minProblem: program ma zareagować inaczej dla różnych danych
5–15 minif, else, wcięcia i operatory porównania
15–22 minelif, and, or i wartości graniczne
22–37 minTrzy zadania samodzielne
37–42 minOmówienie wyników i testów granicznych
42–45 minPytania kontrolne

if, elif, else

wiek = 16
if wiek >= 18:
    print("Pelnoletni")
else:
    print("Niepelnoletni")

Dla wiek = 16 program wypisze Niepelnoletni. Po warunku stawiamy dwukropek, a polecenia należące do gałęzi mają wcięcie (cztery spacje). Gałęzie elif sprawdzane są po kolei i wykona się pierwsza, której warunek jest prawdziwy; pozostałe są pomijane. Operator porównania == sprawdza równość, a pojedyncze = przypisuje wartość — mylenie ich to najczęstszy błąd początkujących.

Warunki łączymy słowami: and (oba prawdziwe), or (przynajmniej jeden prawdziwy), not (negacja). and ma wyższy priorytet niż or, więc w złożonych warunkach używamy nawiasów.

Trzy zadania

Zadanie 1. Znak liczby. Napisz funkcję znak(liczba) zwracającą "dodatnia", "ujemna" lub "zero". Sprawdź liczby 5, −2 i 0.

Zadanie 2. Cena biletu. Dzieci poniżej 7 lat jadą za darmo. Osoby poniżej 18 lat albo uczniowie płacą 12 zł, pozostałe osoby 25 zł. Napisz funkcję bilet(wiek, uczen) i sprawdź przypadki: (5, nie), (16, nie), (30, tak), (30, nie).

Zadanie 3. Rok przestępny. Rok jest przestępny, gdy dzieli się przez 4, ale nie przez 100, chyba że dzieli się przez 400. Napisz funkcję przestepny(rok) i sprawdź lata 2024, 1900, 2000 i 2026.

Dla chętnych: dla trzech odcinków a, b, c sprawdź, czy da się zbudować z nich trójkąt (suma dwóch dowolnych boków większa od trzeciego) oraz czy jest prostokątny.

Rozwiązanie i wyniki

# Zadanie 1
def znak(liczba):
    if liczba > 0:
        return "dodatnia"
    elif liczba < 0:
        return "ujemna"
    else:
        return "zero"


for x in (5, -2, 0):
    print(x, znak(x))

# Zadanie 2
def bilet(wiek, uczen):
    if wiek < 7:
        return 0
    if wiek < 18 or uczen:
        return 12
    return 25


for wiek, uczen in ((5, False), (16, False), (30, True), (30, False)):
    print(wiek, uczen, bilet(wiek, uczen), "zl")

# Zadanie 3
def przestepny(rok):
    return rok % 4 == 0 and (rok % 100 != 0 or rok % 400 == 0)


for rok in (2024, 1900, 2000, 2026):
    print(rok, "przestepny" if przestepny(rok) else "zwykly")

Program wypisze:

5 dodatnia
-2 ujemna
0 zero
5 False 0 zl
16 False 12 zl
30 True 12 zl
30 False 25 zl
2024 przestepny
1900 zwykly
2000 przestepny
2026 zwykly

Warto omówić rok 1900 (dzieli się przez 100, ale nie przez 400, więc jest zwykły) i 2000 (dzieli się przez 400, więc jest przestępny) — to klasyczne wartości graniczne. Zadanie dla chętnych (rozszerzenie.py, boki 3, 4, 5) wypisuje:

Mozna zbudowac trojkat
Trojkat prostokatny

Typowe błędy

ObjawCo sprawdzić
SyntaxError przy ifBrak dwukropka na końcu linii z warunkiem.
IndentationErrorPolecenia w gałęzi nie mają wcięcia lub wcięcia są różne.
if x = 5 zgłasza błądDo porównania służy ==.
Bilet dla 30-latka ucznia kosztuje 25 złWarunek uczen sprawdzono po wieku lub pominięto or uczen.
Rok 1900 uznany za przestępnyBrakuje wyjątku dla lat podzielnych przez 100.
Dwie gałęzie wykonują się narazZamiast elif użyto kilku niezależnych if.

Pytania kontrolne i punktacja

  1. Czym różni się = od ==?
  2. Które polecenie wypisze program: x = 7, if x > 5: print("A"), elif x > 3: print("B")?
  3. Czy rok 2100 jest przestępny?

Odpowiedzi: = przypisuje wartość, == porównuje. Wypisze A — gałąź elif jest pomijana, gdy pierwszy warunek jest prawdziwy. Nie jest (dzieli się przez 100, ale nie przez 400).

Proponowana punktacja (razem 10 punktów): zadanie 1 — trzy gałęzie 2 pkt, trzy wyniki 1 pkt; zadanie 2 — poprawne progi 2 pkt, użycie or 1 pkt, cztery przypadki 1 pkt; zadanie 3 — warunek roku 2 pkt, cztery lata 1 pkt. Zadanie dla chętnych nie jest wymagane do pełnej oceny.

Materiały do pobrania

Rozpakuj ZIP przed otwarciem skryptów. Materiały są dostępne bez logowania; publiczne rozwiązanie służy nauce i samodzielnemu sprawdzeniu, a nie poufnemu sprawdzianowi.

Co dalej po instrukcjach warunkowych?

Następny krok to pętle z warunkiem, listy i algorytmy, w których if decyduje o każdym kroku. Ten materiał rozwija dział o sterowaniu przebiegiem programu w kursie Python w TablicaPro, gdzie znajdziesz prezentacje, ćwiczenia i testy do prowadzenia lekcji.

Źródła techniczne: instrukcja if w oficjalnym tutorialu oraz wyrażenia logiczne. Zobacz też lekcję o pętlach for i while.

Poprowadź kolejne lekcje Python

Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.

Kup dostęp do kursu Python →

Zobacz program kursu