Lekcja 2. Operatory w Pythonie — arytmetyczne, porównania i logiczne
latwyPo co się tego uczymy?
Zmienne z poprzedniej lekcji same w sobie nic nie "robią" — dopiero operatory pozwalają je PRZETWARZAĆ: liczyć, porównywać, łączyć warunki. Bez tego tematu nie da się napisać ani jednej linijki kodu podejmującej decyzję, co jest sercem każdego programu sprawdzanego na maturze.
Teoria
Operatory arytmetyczne — + (dodawanie), - (odejmowanie), * (mnożenie), / (dzielenie, ZAWSZE zwraca float, nawet 10/2 da 5.0), // (dzielenie CAŁKOWITE, zaokrąglone w dół), % (reszta z dzielenia — tzw. modulo), ** (potęgowanie, np. 2**10 = 1024).
Operatory przypisania skróconego — zamiast x = x + 1 można napisać krócej x += 1. Analogicznie działają -=, *=, /=, //=, %=, **=.
Operatory porównania — ZAWSZE zwracają bool (True/False): == (równość — UWAGA, to NIE to samo co =!), != (różność), >, <, >=, <=.
Operatory logiczne — łączą kilka warunków logicznych: and (koniunkcja — oba warunki muszą być prawdziwe), or (alternatywa — wystarczy jeden), not (negacja — odwraca wartość logiczną). W Pythonie te słowa piszemy DOSŁOWNIE (and, or, not), nie symbolami &&/||/! jak w C#/Javie/JavaScript — to częsta pułapka dla uczniów uczących się kilku języków naraz.
Priorytety operatorów (kolejność wykonywania) — podobnie jak w matematyce: najpierw nawiasy (), potem potęgowanie **, potem mnożenie/dzielenie * / // %, na końcu dodawanie/odejmowanie + -. Operatory porównania mają NIŻSZY priorytet niż arytmetyczne, a logiczne (and/or) jeszcze niższy — dzięki temu a + b > c and d == e jest czytelne bez dodatkowych nawiasów (choć dla jasności warto je czasem dodać).
Operator przynależności in — sprawdza, czy element występuje w sekwencji (tekście, liście): "a" in "kasza" da True. Poznasz go dokładniej przy okazji list w ostatniej lekcji tego działu, ale warto już teraz wiedzieć, że istnieje.
Schemat
PRIORYTETY OPERATORÓW (od najwyższego):
1. () nawiasy
2. ** potęgowanie
3. * / // % mnożenie, dzielenie, reszta
4. + - dodawanie, odejmowanie
5. == != > < >= <= porównania
6. not negacja logiczna
7. and koniunkcja
8. or alternatywa
PRZYKŁAD: 2 + 3 * 4 > 10 and not False
2 + 12 > 10 and True (najpierw *, potem +)
14 > 10 and True (potem porównanie)
True and True (potem not)
True (na końcu and)
Przykład z życia
Sklep internetowy sprawdzający, czy klient dostaje darmową dostawę: kwota_koszyka >= 100 and kraj_dostawy == "Polska" — to właśnie operator porównania (>=, ==) połączony operatorem logicznym (and) w JEDEN warunek decydujący o promocji.
operatory.py
# Operatory arytmetyczne
a, b = 17, 5
print(f"{a} + {b} = {a + b}") # 22
print(f"{a} - {b} = {a - b}") # 12
print(f"{a} * {b} = {a * b}") # 85
print(f"{a} / {b} = {a / b}") # 3.4 (zawsze float!)
print(f"{a} // {b} = {a // b}") # 3 (dzielenie całkowite)
print(f"{a} % {b} = {a % b}") # 2 (reszta z dzielenia)
print(f"{a} ** 2 = {a ** 2}") # 289 (potęgowanie)
# Operatory porównania - zawsze zwracają bool
print(a == b) # False
print(a != b) # True
print(a > b) # True
# Operatory logiczne
wiek = 17
ma_zgode_rodzica = True
print(wiek >= 18 or ma_zgode_rodzica) # True (wystarczy jeden warunek)
print(wiek >= 18 and ma_zgode_rodzica) # False (oba muszą być spełnione)
print(not ma_zgode_rodzica) # False (negacja)
Komentarz i wyjaśnienie kodu
a, b = 17, 5 to WIELOKROTNE przypisanie w jednej linijce — Python przypisuje 17 do a i 5 do b jednocześnie. To wygodny skrót, częsty w kodzie Python.
Zwróć szczególną uwagę na różnicę między / a //: 17 / 5 daje 3.4 (float), a 17 // 5 daje 3 (int, obcięte do części całkowitej) — to jedna z najczęstszych pułapek dla osób przechodzących z innych języków, gdzie / na liczbach całkowitych czasem automatycznie dzieli całkowicie.
wiek >= 18 or ma_zgode_rodzica zwraca True, mimo że wiek >= 18 samo w sobie jest False — wystarczy, że DRUGI warunek (ma_zgode_rodzica) jest prawdziwy, bo or wymaga spełnienia CHOĆ JEDNEGO z dwóch warunków.
Ćwiczenie samodzielne
Uruchom kod i zmień wartości a i b na inne liczby. Sprawdź, co się stanie z wynikiem // i %, gdy a jest MNIEJSZE niż b (np. a=3, b=10).
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”.
Zadania do pracy własnej
Napisz program sprawdzający, czy podana przez użytkownika liczba jest podzielna przez 3 (użyj operatora
%i porównania== 0).Napisz program, który pyta o dwie liczby i wypisuje, czy PIERWSZA jest większa, mniejsza czy równa DRUGIEJ — bez używania instrukcji
if(poznasz ją w kolejnej lekcji), tylko wypisując od razu wynik trzech osobnych porównań (>,<,==).Napisz program sprawdzający, czy dany rok jest rokiem przestępnym. Zasada: rok jest przestępny, jeśli dzieli się przez 4, ALE NIE przez 100, CHYBA że dzieli się też przez 400 (np. 2000 był przestępny, 1900 nie był). Zapisz to jako JEDNO wyrażenie logiczne łączące operatory
%,==,and,or,not.
Typowe błędy
Mylenie = (przypisanie) z == (porównanie) — to jeden z najczęstszych błędów początkujących we WSZYSTKICH językach programowania, nie tylko w Pythonie.
Zapominanie, że / zawsze zwraca float — jeśli potrzebujesz wyniku CAŁKOWITEGO (np. liczby pełnych paczek czegoś), musisz użyć //, nie /.
Używanie symboli &&/||/! zamiast and/or/not — to poprawna składnia w C#/Javie/JavaScript, ale w Pythonie spowoduje błąd składniowy; Python wymaga SŁÓW, nie symboli, dla operatorów logicznych.
Nawiązanie do egzaminu zawodowego
Operatory to fundament KAŻDEGO zadania maturalnego wymagającego logiki — od prostych obliczeń po złożone warunki w algorytmach z działu obok (np. sprawdzenie znaku funkcji w metodzie bisekcji, warunek zakończenia pętli w algorytmie Euklidesa). Bez pewnego opanowania operatorów porównania i logicznych nie da się napisać poprawnej instrukcji warunkowej — tematu kolejnej lekcji.