Szybki quiz – przypomnienie poprzedniej lekcji
Temat poprzedniej lekcji: stos i kolejka.
Pytanie 1. Co zostanie wyświetlone?
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack[-1])
print(stack.pop())
print(stack)
Odpowiedź
Odpowiedź:
3
3
[1, 2]
stack[-1] tylko pokazuje szczyt stosu (nic nie usuwa), pop() zdejmuje ten element ze stosu.
Pytanie 2. Co zostanie wyświetlone?
from collections import deque
queue = deque(["A", "B", "C"])
queue.append("D")
print(queue.popleft())
print(queue)
Odpowiedź
Odpowiedź:
A
deque(['B', 'C', 'D'])
Kolejka działa w modelu FIFO: append dodaje na koniec, popleft zdejmuje z początku.
Pytanie 3. Uczeń chce zdjąć z kolejki pierwszą osobę („Ania”), ale program zwraca „Bartek”. Znajdź błąd.
from collections import deque
queue = deque(["Ania", "Bartek"])
first = queue.pop()
print(first)
Odpowiedź
Odpowiedź: pop() zdejmuje element z końca (jak w stosie). Do zdjęcia elementu z początku kolejki trzeba użyć queue.popleft().
Pytanie 4. Który z modeli to LIFO, a który FIFO (stos czy kolejka)? Dlaczego do kolejki zaleca się deque, a nie listę z pop(0)?
Odpowiedź
Odpowiedź: Stos to LIFO (ostatni dodany jest pierwszy zdjęty), kolejka to FIFO (pierwszy dodany jest pierwszy zdjęty). pop(0) na liście jest nieefektywne, bo po usunięciu pierwszego elementu trzeba przesunąć wszystkie pozostałe. deque szybko dodaje i usuwa elementy na obu końcach.
Instrukcje warunkowe to mechanizm pozwalający programowi podejmować decyzje i wykonywać różny kod w zależności od spełnienia określonych warunków. Są fundamentem logiki programowania – pozwalają odpowiadać na pytanie „co jeżeli?”.
Wyobraź sobie instrukcje warunkowe jak rozdroże:
- if – „jeżeli warunek jest prawdziwy, idź tą drogą”
- elif – „a jeżeli to nie działa, sprawdź następny warunek”
- else – „w każdym innym przypadku, idź tą drogą”
Instrukcja if
UWAGA!!! PAMIĘTAJCIE O WCIĘCIACH!!!
Podstawowa składnia
if warunek:
# kod wykonywany gdy warunek jest True
instrukcja1
instrukcja2
Kluczowe elementy:
- Słowo kluczowe
if - Warunek (wyrażenie zwracające True lub False)
- Dwukropek
: - Wcięcie 4 spacji (bardzo ważne!)
Najprostszy przykład:
liczba = 10
if liczba > 0:
print("Liczba jest dodatnia")
#wynik:
#Liczba jest dodatnia
Jak to działa:
- Python sprawdza warunek
liczba > 0 10 > 0toTrue- Wykonuje kod w bloku (z wcięciem)
Przykład bez spełnionego warunku
liczba = -5
if liczba > 0:
print("Liczba jest dodatnia")
print("Koniec programu")
#wynik:
#Koniec programu
Blok if został pominięty, ponieważ warunek był False.
Instrukcja else
Gdy potrzebujesz reakcji na „w przeciwnym wypadku”, używasz else.
if warunek:
# kod gdy warunek True
else:
# kod gdy warunek False
Przykład
liczba = -5
if liczba > 0:
print("Liczba jest dodatnia")
else:
print("Liczba nie jest dodatnia")
#wynik
#Liczba nie jest dodatnia
Jak to działa:
- Warunek
liczba > 0to False - Python pomija blok if
- Wykonuje blok else
Instrukcja elif
Gdy masz więcej niż dwa scenariusze, używasz elif (else if).
if warunek1:
# kod gdy warunek1 True
elif warunek2:
# kod gdy warunek1 False, ale warunek2 True
else:
# kod gdy wszystkie warunki False
Przykład – klasyfikacja liczby
liczba = 0
if liczba > 0:
print("Liczba jest dodatnia")
elif liczba == 0:
print("Podano zero")
else:
print("Liczba jest ujemna")
#wynik
#Podano zero
Jak to działa:
liczba > 0to False – pomijamyliczba == 0to True – wykonujemy ten blok- Pomijamy resztę (else nie będzie wykonane)
Wiele warunków elif
Możesz mieć dowolną liczbę elif:
ocena = 85
if ocena >= 90:
print("Ocena: 5")
elif ocena >= 80:
print("Ocena: 4")
elif ocena >= 70:
print("Ocena: 3")
elif ocena >= 60:
print("Ocena: 2")
else:
print("Ocena: 1")
#wynik
#Ocena: 4
Zagnieżdżanie instrukcji warunkowych
Możesz umieszczać instrukcje if wewnątrz innych instrukcji if.
wiek = 20
ma_prawo_jazdy = True
if wiek >= 18:
print("Jesteś pełnoletni")
if ma_prawo_jazdy:
print("Możesz prowadzić samochód")
else:
print("Musisz zrobić prawo jazdy")
else:
print("Jesteś niepełnoletni")
#wynik
#Jesteś pełnoletni
#Możesz prowadzić samochód
Operatory porównania w warunkach
UWAGA: w warunkach nie stosujemy pojedynczego znaku „=”
a = 10
b = 5
# Równość
if a == b:
print("Równe")
# Nierówność
if a != b:
print("Różne")
# Większe
if a > b:
print("a jest większe od b")
# Mniejsze
if a < b:
print("a jest mniejsze od b")
# Większe lub równe
if a >= b:
print("a jest większe lub równe b")
# Mniejsze lub równe
if a <= b:
print("a jest mniejsze lub równe b")
Operatory logiczne
and – i (oba warunki muszą być True)
wiek = 25
ma_prawo_jazdy = True
if wiek >= 18 and ma_prawo_jazdy:
print("Możesz wypożyczyć samochód")
or – lub (przynajmniej jeden warunek True)
dzien = "sobota"
if dzien == "sobota" or dzien == "niedziela":
print("Weekend!")
not – negacja
jest_deszcz = False
if not jest_deszcz:
print("Nie potrzebujesz parasola")
Łączenie operatorów
wiek = 25
wzrost = 180
waga = 75
if (wiek >= 18 and wiek <= 40) and (wzrost >= 170 and waga <= 90):
print("Spełniasz wymagania")
Operator in
Operator in sprawdza czy element znajduje się w kolekcji.
# Sprawdzanie w liście
owoce = ["jabłko", "banan", "gruszka"]
if "jabłko" in owoce:
print("Jabłko jest na liście")
Przykład – walidacja wyboru
odpowiedz = input("Wybierz: papier, kamień lub nożyce: ")
odpowiedz = odpowiedz.lower()
opcje = ["papier", "kamień", "nożyce"]
if odpowiedz in opcje:
print(f"Wybrałeś: {odpowiedz}")
else:
print("Podałeś niepoprawną wartość")
#wynik
#Wybierz: papier, kamień lub nożyce: Papier
#Wybrałeś: papier
in z różnymi kolekcjami
# Lista
if "a" in ["a", "b", "c"]:
print("Jest w liście")
# Krotka
if 5 in (1, 2, 3, 4, 5):
print("Jest w krotce")
# Zestaw
if "Python" in {"Python", "Java", "C++"}:
print("Jest w zestawie")
# Słownik (sprawdza klucze)
slownik = {"name": "Jan", "age": 25}
if "name" in slownik:
print("Klucz 'name' istnieje")
# String (sprawdza podciąg)
if "Py" in "Python":
print("'Py' jest w 'Python'")
Operator not in
Sprawdza czy elementu NIE MA w kolekcji.
name = "Kama"
if name not in ["Ania", "Kasia", "Zosia"]:
print("Nie ma na liście")
#wynik
#Nie ma na liście
Operator not
Negacja wartości logicznej
cos = False
if not cos:
print("Zmienna 'cos' jest False")
Różnica między not i !=
# != używamy do porównania dwóch wartości
a = 5
b = 10
if a != b:
print("a nie równa się b")
# not używamy do negacji wartości logicznej
is_logged_in = False
if not is_logged_in:
print("Użytkownik nie jest zalogowany")
Operator is vs ==
== sprawdza równość wartości
a = [1, 2, 3]
b = [1, 2, 3]
if a == b:
print("Wartości są równe") # To się wyświetli
is sprawdza tożsamość (ten sam obiekt w pamięci)
a = [1, 2, 3]
b = [1, 2, 3]
c = a
if a is b:
print("To ten sam obiekt") # To się NIE wyświetli
if a is c:
print("To ten sam obiekt") # To się wyświetli
Kiedy używać is:
- Głównie do porównań z
None - Porównań z
TrueiFalse
x = None
# DOBRZE
if x is None:
print("x jest None")
# ŹLE (działa, ale niezgodne z konwencją)
if x == None:
print("x jest None")
Python nie ma switch/case
Uwaga: Python nie posiada konstrukcji switch znanej z C++, Java, JavaScript.
Zamiast switch używamy if-elif-else
wybor = 2
# W innych językach byłby switch
if wybor == 1:
print("Opcja 1")
elif wybor == 2:
print("Opcja 2")
elif wybor == 3:
print("Opcja 3")
else:
print("Nieznana opcja")
Alternatywa – słownik (od Python 3.10 jest match-case)
# Eleganckie rozwiązanie ze słownikiem
opcje = {
1: "Opcja 1",
2: "Opcja 2",
3: "Opcja 3"
}
wybor = 2
print(opcje.get(wybor, "Nieznana opcja"))
Skrócony zapis (inline if)
Operator warunkowy (ternary)
# Pełny zapis
wiek = 20
if wiek >= 18:
status = "Pełnoletni"
else:
status = "Niepełnoletni"
# Skrócony zapis
wiek = 20
status = "Pełnoletni" if wiek >= 18 else "Niepełnoletni"
print(status) # Pełnoletni
Składnia: wartość_gdy_true if warunek else wartość_gdy_false
Przykład praktyczny
# Określanie znaku liczby
liczba = -5
znak = "dodatnia" if liczba > 0 else "ujemna"
# Rabat
cena = 100
ile_sztuk = 5
rabat = 0.1 if ile_sztuk >= 10 else 0
cena_koncowa = cena * (1 - rabat)
# Przywitanie
pora_dnia = "rano"
powitanie = "Dzień dobry" if pora_dnia == "rano" else "Dobry wieczór"
Przykłady praktyczne
Przykład 1: Sprawdzanie parzystości
liczba = 8
if liczba == 0:
print("Podano zero")
elif liczba % 2 == 0:
print("Liczba jest parzysta")
else:
print("Liczba jest nieparzysta")
Przykład 2: Porównywanie dwóch liczb
a = 10
b = 5
print(f"Porównujemy liczby {a} i {b}")
if a > b:
print(f"Większa jest liczba a = {a}")
elif b > a:
print(f"Większa jest liczba b = {b}")
else:
print("Liczby są równe")
Przykład 3: Znajdowanie największej z czterech liczb
a, b, c, d = 10, 5, 18, 1
# Zakładamy że pierwsza jest największa
najwieksza = a
# Sprawdzamy pozostałe
if b > najwieksza:
najwieksza = b
if c > najwieksza:
najwieksza = c
if d > najwieksza:
najwieksza = d
print(f"Największa liczba to: {najwieksza}")
Przykład 4: Prosty kalkulator
liczba1 = 10
liczba2 = 5
wybor = "+"
if wybor == "+":
print(f"{liczba1} + {liczba2} = {liczba1 + liczba2}")
elif wybor == "-":
print(f"{liczba1} - {liczba2} = {liczba1 - liczba2}")
elif wybor == "*":
print(f"{liczba1} * {liczba2} = {liczba1 * liczba2}")
elif wybor == "/":
if liczba2 != 0:
print(f"{liczba1} / {liczba2} = {liczba1 / liczba2}")
else:
print("Nie można dzielić przez zero!")
else:
print("Niepoprawny operator")
Przykład 5: Miesiące roku
nr = 3
if nr == 1:
print("Styczeń")
elif nr == 2:
print("Luty")
elif nr == 3:
print("Marzec")
elif nr == 4:
print("Kwiecień")
elif nr == 5:
print("Maj")
elif nr == 6:
print("Czerwiec")
elif nr == 7:
print("Lipiec")
elif nr == 8:
print("Sierpień")
elif nr == 9:
print("Wrzesień")
elif nr == 10:
print("Październik")
elif nr == 11:
print("Listopad")
elif nr == 12:
print("Grudzień")
else:
print("Nieprawidłowy numer miesiąca")
Przykład 6: Sprawdzanie rozszerzenia pliku
filename = "01012020_sales.xlsx"
if filename.endswith(".xlsx"):
print("TAK")
else:
print("NIE")
Przykład 7: Sprawdzanie wielkich liter
code = "DSVNDOICSN"
if code.isupper():
print("TAK")
else:
print("NIE")
Przykład 8: Sprawdzanie typu zmiennej
number = 0
if isinstance(number, int):
print("TAK")
else:
print("NIE")
Przykład 9: Walidacja długości hasła
password = "cskdnjcasa#!"
if len(password) >= 11:
print("Hasło poprawne")
else:
print("Hasło zbyt krótkie")
Przykład 10: Złożona walidacja hasła
password = "cskdnjcasa#!"
if len(password) >= 11 and "!" in password:
print("Hasło poprawne")
else:
print("Hasło niepoprawne")
Przykład 11: Sprawdzanie i dodawanie do listy
project_ids = ["02134", "24253"]
project_id = "02135"
if project_id not in project_ids:
project_ids.append(project_id)
print(project_ids)
Przykład 12: Modyfikacja słownika
project_ids = {
"01": "open",
"02": "new",
"03": "in progress",
"04": "completed"
}
if project_ids["02"] == "new":
project_ids["02"] = "open"
print(project_ids)
Przykład 13: Usuwanie z listy
items = ["001", "000", "003", "005", "006"]
item = "001"
if item in items:
items.remove(item)
print(items)
Zadania
Podstawy instrukcji warunkowych
- Stwórz zmienną
temperaturaz wartością 22. Jeśli temperatura jest większa niż 20, wyświetl „Ciepło”, w przeciwnym razie wyświetl „Zimno”. - Pobierz od użytkownika liczbę. Sprawdź czy jest większa od 100 i wyświetl odpowiedni komunikat.
- Stwórz zmienną
wiekz wartością 16. Sprawdź czy osoba jest pełnoletnia (wiek >= 18) i wyświetl odpowiednią informację. - Pobierz od użytkownika jego imię. Jeśli imię to „Admin”, wyświetl „Witaj Administratorze!”, w przeciwnym razie wyświetl „Witaj użytkowniku!”.
- Stwórz zmienną
hasloz jakąś wartością. Sprawdź czy hasło ma długość co najmniej 8 znaków. Wyświetl „Hasło akceptowalne” lub „Hasło za krótkie”.
Instrukcja elif
- Pobierz od użytkownika liczbę. Sprawdź czy jest dodatnia, ujemna czy równa zero. Wyświetl odpowiedni komunikat dla każdego przypadku.
- Stwórz zmienną
ocenaz wartością od 1 do 6. Wyświetl słowną interpretację oceny (1-ndst, 2-dop, 3-dst, 4-db, 5-bdb, 6-cel). - Pobierz od użytkownika wiek. Sklasyfikuj osobę jako: dziecko (0-12), nastolatek (13-17), dorosły (18-64), senior (65+).
- Stwórz zmienną
miesiącz numerem miesiąca (1-12). Wyświetl do jakiej pory roku należy ten miesiąc (wiosna, lato, jesień, zima). - Pobierz od użytkownika ocenę procentową (0-100). Przypisz ocenę literową według skali: A (90-100), B (80-89), C (70-79), D (60-69), F (0-59).
Operatory logiczne (and, or, not)
- Pobierz od użytkownika wiek i sprawdź czy ma prawo jazdy (zmienną bool). Jeśli ma co najmniej 18 lat I ma prawo jazdy, wyświetl „Możesz prowadzić samochód”.
- Stwórz zmienną
dzienz nazwą dnia tygodnia. Sprawdź czy to sobota LUB niedziela i wyświetl „Weekend!” lub „Dzień roboczy”. - Pobierz od użytkownika temperaturę. Sprawdź czy jest między 18 a 24 stopniami (włącznie). Jeśli tak, wyświetl „Komfortowa temperatura”.
- Stwórz zmienną
jest_slonecznie(bool). Jeśli NIE jest słonecznie, wyświetl „Weź parasol”. - Pobierz od użytkownika wzrost (w cm) i wagę (w kg). Jeśli wzrost jest powyżej 180 cm I waga poniżej 80 kg, wyświetl „Spełniasz wymogi”.
- Stwórz program sprawdzający czy rok jest przestępny. Rok jest przestępny jeśli: jest podzielny przez 4 I (nie jest podzielny przez 100 LUB jest podzielny przez 400).
- Pobierz od użytkownika dwie liczby. Sprawdź czy przynajmniej jedna z nich jest większa od 50.
- Stwórz zmienną
pogoda(string) itemperatura(int). Jeśli pogoda to „deszcz” LUB temperatura jest poniżej 10, wyświetl „Zostań w domu”.
Operator in i not in
- Stwórz listę ulubionych kolorów. Pobierz od użytkownika kolor i sprawdź czy jest na liście. Wyświetl odpowiedni komunikat.
- Stwórz listę dostępnych rozmiarów ubrań [„S”, „M”, „L”, „XL”]. Pobierz od użytkownika rozmiar i sprawdź czy jest dostępny.
- Pobierz od użytkownika nazwę owocu. Sprawdź czy NIE znajduje się w liście owoców cytrusowych [„pomarańcza”, „cytryna”, „grejpfrut”, „mandarynka”].
- Stwórz krotkę z nazwami miesięcy letnich. Pobierz nazwę miesiąca i sprawdź czy jest to miesiąc letni.
- Stwórz słownik z kodami krajów (np. {„PL”: „Polska”, „DE”: „Niemcy”}). Pobierz kod kraju i sprawdź czy istnieje w słowniku.
- Pobierz od użytkownika adres email. Sprawdź czy zawiera znak „@”. Jeśli nie, wyświetl „Nieprawidłowy email”.
- Stwórz zestaw zabronionych słów. Pobierz od użytkownika komentarz i sprawdź czy zawiera któreś z zabronionych słów.
Zagnieżdżone instrukcje warunkowe
- Pobierz od użytkownika wiek i czy jest studentem. Jeśli ma co najmniej 18 lat, sprawdź czy jest studentem. Jeśli tak, wyświetl „Zniżka studencka 50%”, jeśli nie „Bilet normalny”.
- Pobierz trzy liczby. Sprawdź czy pierwsza jest największa. Jeśli tak, sprawdź czy druga jest większa od trzeciej.
- Pobierz temperaturę i czy pada deszcz (bool). Jeśli temperatura jest powyżej 20 stopni, sprawdź czy pada. Jeśli nie pada, wyświetl „Idealna pogoda na spacer”.
- Pobierz wzrost i wagę. Oblicz BMI (waga / wzrost²). Jeśli BMI jest poniżej 25, sprawdź czy jest powyżej 18.5 (zdrowy zakres).
- Pobierz liczbę. Sprawdź czy jest dodatnia. Jeśli tak, sprawdź czy jest parzysta czy nieparzysta.
Operator is i isinstance
- Stwórz zmienną z wartością None. Sprawdź czy jest None używając operatora is.
- Pobierz od użytkownika wartość. Sprawdź czy jest typu int używając isinstance().
- Stwórz dwie listy z takimi samymi wartościami. Porównaj je używając == i is. Wyjaśnij różnicę w komentarzu.
- Stwórz zmienną typu float. Sprawdź czy jest instancją klasy (int, float) używając isinstance() z krotką typów.
- Pobierz wartość od użytkownika. Sprawdź czy NIE jest None przed wykonaniem na niej operacji.
Zadania z matematyką
- Pobierz trzy długości boków. Sprawdź czy można z nich zbudować trójkąt (suma dwóch krótszych boków musi być większa od najdłuższego).
- Pobierz współrzędne punktu (x, y). Określ w której ćwiartce układu współrzędnych się znajduje (I, II, III, IV) lub czy leży na osi.
- Pobierz liczbę. Sprawdź czy jest liczbą pierwszą (podzielna tylko przez 1 i siebie).
- Pobierz rok. Sprawdź czy jest rokiem przestępnym i wyświetl ile dni ma luty w tym roku.
- Pobierz trzy liczby. Sprawdź czy tworzą ciąg arytmetyczny (różnica między kolejnymi liczbami jest stała).
Walidacja danych
- Pobierz numer telefonu. Sprawdź czy ma dokładnie 9 cyfr i zaczyna się od cyfry (nie zawiera liter).
- Pobierz adres email. Sprawdź czy zawiera „@” i „.” oraz czy „@” znajduje się przed „.”.
- Pobierz hasło. Sprawdź czy spełnia wymagania: minimum 8 znaków, zawiera wielką literę, małą literę i cyfrę.
- Pobierz kod pocztowy. Sprawdź czy ma format XX-XXX (dwie cyfry, myślnik, trzy cyfry).
- Pobierz numer PESEL (jako string). Sprawdź czy ma dokładnie 11 cyfr.
- Pobierz datę w formacie DD-MM-YYYY. Sprawdź czy miesiąc jest w zakresie 1-12 i dzień w zakresie 1-31.
- Pobierz login. Sprawdź czy ma od 3 do 20 znaków i zawiera tylko litery i cyfry.
Zadania ze stringami
- Pobierz nazwę pliku. Sprawdź rozszerzenie i określ typ pliku (obraz: jpg, png; dokument: pdf, docx; kod: py, js).
- Pobierz zdanie. Sprawdź czy zaczyna się wielką literą i kończy kropką.
- Pobierz tekst. Sprawdź czy składa się tylko z małych liter używając metody islower().
- Pobierz kod produktu. Sprawdź czy jest w formacie: trzy wielkie litery, myślnik, trzy cyfry (np. ABC-123).
- Pobierz imię. Sprawdź czy pierwsza litera jest wielka, a pozostałe małe.
Zadania z listami i kolekcjami
- Pobierz liczbę. Sprawdź czy znajduje się w liście liczb pierwszych [2, 3, 5, 7, 11, 13, 17, 19].
- Stwórz listę zakupów. Pobierz produkt i sprawdź czy jest na liście. Jeśli jest, usuń go. Jeśli nie ma, dodaj.
- Stwórz dwie listy z imionami. Pobierz imię i sprawdź w której liście się znajduje (lub w obu, lub w żadnej).
- Stwórz listę numerów kont bankowych. Pobierz numer konta i sprawdź czy jest na liście (jeśli nie, wyświetl „Konto nie istnieje”).
- Pobierz element. Sprawdź czy występuje jednocześnie w liście i w zestawie (dwie różne kolekcje).
Zadania ze słownikami
- Stwórz słownik z cenami produktów. Pobierz nazwę produktu i wyświetl cenę lub „Produkt niedostępny”.
- Stwórz słownik z danymi logowania (login: hasło). Pobierz login i hasło, sprawdź czy są poprawne.
- Stwórz słownik ze statusami zamówień. Pobierz numer zamówienia i wyświetl jego status lub „Zamówienie nie znalezione”.
- Stwórz słownik z tłumaczeniami (polskie: angielskie). Pobierz słowo polskie i wyświetl tłumaczenie.
- Stwórz słownik z punktacją graczy. Pobierz imię gracza i sprawdź czy przekroczył 100 punktów.
Zadania z wieloma warunkami
- Stwórz prosty system logowania: pobierz login i hasło. Sprawdź kilka warunków (czy pola nie są puste, czy login istnieje, czy hasło jest poprawne).
- Stwórz kalkulator rabatów: pobierz cenę i ilość. Zastosuj rabat: 5% dla 10-19 sztuk, 10% dla 20-49 sztuk, 15% dla 50+ sztuk.
- Stwórz system oceny ryzyka kredytowego: pobierz dochód, wiek i historię kredytową (bool). Określ poziom ryzyka: niskie, średnie, wysokie.
- Pobierz wagę przesyłki i odległość. Oblicz koszt dostawy według zasad: waga do 1kg: 10zł, 1-5kg: 15zł, 5kg+: 20zł. Odległość powyżej 100km dodaje 5zł.
- Stwórz system rezerwacji biletów: pobierz wiek, czy student, dzień tygodnia. Zastosuj odpowiednie zniżki (dzieci 50%, studenci 30%, senior 40%, weekend +20%).
Zadania z operatorem warunkowym (ternary)
- Pobierz liczbę. Używając operatora warunkowego przypisz do zmiennej „parzysta” lub „nieparzysta”.
- Pobierz temperaturę. Używając operatora warunkowego przypisz do zmiennej „ciepło” jeśli >20, w przeciwnym razie „zimno”.
- Pobierz dwie liczby. Używając operatora warunkowego przypisz większą z nich do zmiennej.
- Pobierz wiek. Używając operatora warunkowego przypisz „TAK” lub „NIE” do zmiennej oznaczającej pełnoletność.
- Pobierz ocenę (1-6). Używając operatora warunkowego przypisz „Zaliczone” dla ocen 3-6 lub „Niezaliczone” dla 1-2.
Zadania kompleksowe
- Stwórz quiz z 5 pytaniami. Dla każdej odpowiedzi sprawdź czy jest poprawna. Na końcu wyświetl wynik i ocenę (5 pkt – celujący, 4 pkt – bardzo dobry, itd.).
- Stwórz symulator bankomatu: pobierz PIN (sprawdź poprawność), wybierz operację (wypłata/wpłata/sprawdź saldo), wykonaj operację z walidacją.
- Stwórz kalkulator podatku: pobierz dochód roczny, oblicz podatek według progów podatkowych (17% do 120k, 32% powyżej), uwzględnij ulgę podatkową.
- Stwórz system parkingowego: pobierz typ pojazdu (samochód/motocykl/ciężarówka) i czas parkowania (w godzinach). Oblicz koszt według stawek: samochód 4zł/h, motocykl 2zł/h, ciężarówka 8zł/h. Pierwsze 15 minut gratis.
- Stwórz walidator daty: pobierz dzień, miesiąc, rok. Sprawdź czy data jest poprawna (uwzględnij różną liczbę dni w miesiącach i lata przestępne).
- Stwórz konwerter jednostek: pobierz wartość i jednostkę źródłową (km/m/cm), pobierz jednostkę docelową, wykonaj konwersję.
- Stwórz system rekomendacji filmów: pobierz wiek, gatunek filmowy (akcja/komedia/dramat/horror), czy lubi filmy zagraniczne (bool). Na podstawie kryteriów zaproponuj konkretny film.
PODSUMOWANIE
- Instrukcja warunkowa wykonuje blok kodu tylko wtedy, gdy warunek ma wartość
True. - Składnia
if: słowo kluczowe, warunek, dwukropek:, a pod spodem blok z wcięciem 4 spacji. Wcięcie decyduje, co należy do bloku. elsenie ma warunku. Wykonuje się, gdy żaden wcześniejszy warunek nie był prawdziwy. Występuje najwyżej raz i zawsze na końcu.elifto kolejne warunki sprawdzane od góry do dołu. Wykonuje się tylko pierwszy blok, którego warunek jest prawdziwy, a reszta jest pomijana. Dlatego kolejność warunków ma znaczenie.- Kilka osobnych
ifpod rząd to niezależne sprawdzenia (każdy jest oceniany osobno), aif-elif-elseto jeden wybór z kilku opcji (jak w przykładzie szukania największej liczby). - Zagnieżdżanie:
ifwewnątrzif. Każdy poziom ma własne wcięcie. - W warunkach porównujemy przez
==. Pojedynczy=to przypisanie i w warunku jest błędem. - Operatory porównania:
==,!=,>,<,>=,<=. - Operatory logiczne:
and(oba warunki prawdziwe),or(przynajmniej jeden prawdziwy),not(negacja). Kolejność:not, potemand, potemor. Gdy masz wątpliwości, użyj nawiasów. in/not insprawdzają, czy element jest w kolekcji: w liście, krotce i zestawie sprawdzają elementy, w słowniku klucze, w stringu podciąg.notsłuży do negacji wartości logicznej (np.if not zalogowany:), a!=do porównania dwóch wartości.==porównuje wartości,issprawdza, czy to ten sam obiekt.isstosujemy głównie zNone:x is None,x is not None.input()zawsze zwraca string, więc przed porównaniem liczbowym trzeba użyćint()lubfloat().- Python nie ma
switch. Zamiast niego używamyif-elif-elsealbo słownika z.get(). - Operator warunkowy (ternary):
wartość_gdy_True if warunek else wartość_gdy_False.
Minimum, które powinno wejść w pamięć
Jeżeli masz zapamiętać tylko kilka rzeczy z tej lekcji, zapamiętaj te:
- Po
if,elifielsezawsze dwukropek, a blok pod spodem ma wcięcie 4 spacji. - W warunku piszemy
==, nie=. if-elif-elsewykonuje tylko jeden blok, pierwszy z prawdziwym warunkiem. Warunki ustawiaj w sensownej kolejności.- Kilka osobnych
ifto niezależne sprawdzenia, więc może wykonać się więcej niż jeden blok. input()zwraca tekst. Do porównań liczbowych użyjint(input(...))albofloat(input(...)).and– oba prawdziwe,or– przynajmniej jeden prawdziwy,not– odwrócenie. Kolejność:not,and,or.inw słowniku sprawdza klucze, w stringu podciąg.is None/is not Nonedo sprawdzaniaNone. Do porównywania wartości służy==.- Podzielność i parzystość:
liczba % 2 == 0. - Python nie ma
switch. Używamyif-elif-elsealbo słownika.
Ściągawka – najważniejsze polecenia i składnia
Schemat instrukcji warunkowej
if warunek1:
instrukcje
elif warunek2:
instrukcje
else:
instrukcje
Operatory
| Rodzaj | Operatory | Znaczenie |
|---|---|---|
| Porównania | == != | równe / różne |
> < >= <= | większe, mniejsze, większe lub równe, mniejsze lub równe | |
| Logiczne | and or not | i / lub / negacja |
| Przynależność | in not in | jest / nie ma w kolekcji |
| Tożsamość | is is not | ten sam obiekt / inny obiekt |
in w różnych kolekcjach
| Kolekcja | Co sprawdza | Przykład |
|---|---|---|
| lista, krotka, zestaw | elementy | "a" in ["a", "b"] |
| słownik | klucze | "name" in slownik |
| string | podciąg | "Py" in "Python" |
Operator warunkowy (ternary)
status = "Pełnoletni" if wiek >= 18 else "Niepełnoletni"
Zamiast switch: słownik
print(opcje.get(wybor, "Nieznana opcja"))
Najczęściej używane wzorce
liczba % 2 == 0 # parzysta
najwieksza = a # zakładamy, że pierwsza jest największa,
if b > najwieksza: # a potem sprawdzamy pozostałe
najwieksza = b
if x is None: ... # sprawdzenie None
if odpowiedz.lower() in opcje: # odporne na wielkość liter
if element not in lista: # dodaj, jeśli jeszcze go nie ma
lista.append(element)
Metody i funkcje przydatne w warunkach (z lekcji)
| Zapis | Co sprawdza |
|---|---|
len(tekst) == 11 | długość |
nazwa.endswith(".xlsx") | zakończenie tekstu |
kod.isupper() | czy same wielkie litery |
isinstance(x, int) | typ zmiennej |
Typowe błędy
| Błąd | Poprawnie |
|---|---|
if x = 5: | if x == 5: |
if x == 5 (brak :) | if x == 5: |
brak wcięcia pod if | 4 spacje wcięcia |
if wiek >= 18: gdzie wiek = input() | wiek = int(input()) |
if x == None: | if x is None: |
elif bez wcześniejszego if | zawsze zaczynamy od if |
warunki ułożone od najszerszego (>= 60 przed >= 80) | od najbardziej szczegółowego |
Quiz – sprawdź się
Pytanie 1. Python nie ma instrukcji switch. Podaj dwa sposoby z lekcji, którymi można ją zastąpić.
Pytanie 2. Co zostanie wyświetlone?
x = 7
if x > 5:
print("A")
if x > 6:
print("B")
elif x > 3:
print("C")
else:
print("D")
Pytanie 3. Co zostanie wyświetlone? Jaki jest tu błąd w logice i jak go naprawić?
punkty = 85
if punkty >= 60:
print("dst")
elif punkty >= 80:
print("db")
elif punkty >= 90:
print("bdb")
Pytanie 4. Dlaczego ten program zgłosi błąd (TypeError) i jak go poprawić?
wiek = input("Podaj wiek: ")
if wiek >= 18:
print("Pełnoletni")
Pytanie 5. Znajdź 4 błędy w kodzie.
temp = 15
if temp = 20
print("Ciepło")
else
print("Zimno")
Pytanie 6. Co zostanie wyświetlone (cztery linie)?
a = 4
b = 9
print(a > 3 and b < 5)
print(a > 3 or b < 5)
print(not a == 4)
print(a > 3 and not b < 5)
Pytanie 7. Uzupełnij puste miejsca tak, aby program wyświetlił „Wejście dozwolone”.
dozwolone = ["admin", "ola", "kuba"]
login = "Ola".____()
if login ____ dozwolone:
print("Wejście dozwolone")
else:
print("Brak dostępu")
Pytanie 8. Co zostanie wyświetlone (cztery linie)?
dane = {"imie": "Jan", "wiek": 25}
print("Jan" in dane)
print("imie" in dane)
print("an" in "Jan")
print(25 not in (10, 20, 30))
Pytanie 9. Co zostanie wyświetlone? Wyjaśnij różnicę między == a is. Jak poprawnie sprawdzić, czy zmienna x ma wartość None?
a = [1, 2]
b = [1, 2]
c = a
print(a == b, a is b, a is c)
Pytanie 10. Co zostanie wyświetlone?
wiek = 20
ma_bilet = False
if wiek >= 18:
if ma_bilet:
print("Wejście")
else:
print("Kup bilet")
else:
print("Za młody")
Pytanie 11. Zapisz w jednej linii, używając operatora warunkowego (ternary):
if punkty >= 50:
wynik = "zaliczone"
else:
wynik = "niezaliczone"
Pytanie 12 (zadanie praktyczne). Napisz program, który pobiera od użytkownika liczbę całkowitą i wyświetla: „zero”, „parzysta” albo „nieparzysta”.
Pytanie 13 (zadanie praktyczne). Napisz program, który pobiera od użytkownika cenę produktu i liczbę sztuk. Jeśli sztuk jest co najmniej 10, naliczany jest rabat 10%. Wyświetl cenę końcową za jedną sztukę.
Odpowiedzi
1. Łańcuch if-elif-else oraz słownik z metodą .get(), np. opcje.get(wybor, "Nieznana opcja"). (Lekcja wspomina też match-case od Pythona 3.10, ale go nie omawia.)
2. Wynik:
A
B
Pierwszy if jest niezależny i wypisuje „A”. Drugi blok to osobny łańcuch: x > 6 jest prawdziwe, więc wypisuje „B”, a elif i else są pomijane.
3. Wynik: dst. Warunek punkty >= 60 jest prawdziwy już dla 85, więc pozostałe elif nie są sprawdzane. Naprawa: ustawić warunki od najwyższego progu (>= 90, potem >= 80, potem >= 60).
4. input() zwraca string, a porównanie napisu z liczbą 18 powoduje TypeError. Poprawnie: wiek = int(input("Podaj wiek: ")).
5. Błędy:
=zamiast==w warunku (temp = 20),- brak dwukropka po
if temp == 20, - brak wcięcia przy pierwszym
print, - brak dwukropka po
else.
Poprawnie:
temp = 15
if temp == 20:
print("Ciepło")
else:
print("Zimno")
6.
False
True
False
True
a > 3 and b < 5:True and False, więcFalse,a > 3 or b < 5:True or False, więcTrue,not a == 4: porównanie wykonuje się przednot, czylinot True, więcFalse,a > 3 and not b < 5:True and not False, więcTrue.
7. lower oraz in:
login = "Ola".lower()
if login in dozwolone:
8.
False
True
True
True
W słowniku in sprawdza klucze, a nie wartości, więc „Jan” (wartość) daje False. W stringu in sprawdza podciąg.
9. Wynik: True False True. a == b jest prawdziwe, bo listy mają takie same wartości. a is b jest fałszywe, bo to dwa różne obiekty. a is c jest prawdziwe, bo c wskazuje na ten sam obiekt co a. == porównuje wartości, a is sprawdza tożsamość obiektu. Sprawdzenie None: if x is None:.
10. Wynik: Kup bilet. Zewnętrzny warunek (wiek >= 18) jest prawdziwy, a ma_bilet ma wartość False, więc wykonuje się wewnętrzny else.
11.
wynik = "zaliczone" if punkty >= 50 else "niezaliczone"
12. Przykładowe rozwiązanie:
liczba = int(input("Podaj liczbę: "))
if liczba == 0:
print("zero")
elif liczba % 2 == 0:
print("parzysta")
else:
print("nieparzysta")
Warunek dla zera musi być pierwszy, bo 0 % 2 == 0 też jest prawdziwe.
13. Przykładowe rozwiązanie:
cena = float(input("Podaj cenę: "))
ile_sztuk = int(input("Podaj liczbę sztuk: "))
if ile_sztuk >= 10:
cena_koncowa = cena * 0.9
else:
cena_koncowa = cena
print(f"Cena końcowa za sztukę: {cena_koncowa}")
Test: cena 100 i 5 sztuk daje 100.0, cena 100 i 10 sztuk daje 90.0.