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,elifielseoraz wyjaśnić kolejność sprawdzania; - łączyć warunki operatorami
and,or,not; - przetestować program na wartościach granicznych.
| Czas | Praca na lekcji |
|---|---|
| 0–5 min | Problem: program ma zareagować inaczej dla różnych danych |
| 5–15 min | if, else, wcięcia i operatory porównania |
| 15–22 min | elif, and, or i wartości graniczne |
| 22–37 min | Trzy zadania samodzielne |
| 37–42 min | Omówienie wyników i testów granicznych |
| 42–45 min | Pytania 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
| Objaw | Co sprawdzić |
|---|---|
SyntaxError przy if | Brak dwukropka na końcu linii z warunkiem. |
| IndentationError | Polecenia w gałęzi nie mają wcięcia lub wcięcia są różne. |
if x = 5 zgłasza błąd | Do 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ępny | Brakuje wyjątku dla lat podzielnych przez 100. |
| Dwie gałęzie wykonują się naraz | Zamiast elif użyto kilku niezależnych if. |
Pytania kontrolne i punktacja
- Czym różni się
=od==? - Które polecenie wypisze program:
x = 7,if x > 5: print("A"),elif x > 3: print("B")? - 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
- Pakiet Python: plik startowy, rozwiązanie, rozszerzenie i karta pracy
- Karta pracy ucznia — otwórz i wydrukuj
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 →