Darmowa lekcja Lekcja 2 z 3 ok. 40 min

Warunki i pętle w Pythonie

Dotąd program wykonywał się liniowo, linia po linii. Prawdziwa magia zaczyna się, gdy kod potrafi podejmować decyzje i powtarzać czynności tysiące razy — i właśnie to dają warunki oraz pętle.

W tej lekcji nauczysz się: jak sprawiać, by program podejmował decyzje (if, elif, else) i jak powtarzać czynności pętlami for oraz while. Na koniec napiszesz klasyczny program FizzBuzz i wykonasz ćwiczenie z tabliczką mnożenia.

Instrukcja warunkowa if

Warunek pozwala wykonać fragment kodu tylko wtedy, gdy coś jest prawdą. Składnia ma dwie ważne cechy: dwukropek na końcu linii z warunkiem i wcięcie (4 spacje) w linii wykonywanej:

wiek = 20

if wiek >= 18:
    print("Jesteś pełnoletni")

Operator >= znaczy „większe lub równe". Do porównań służą też: == (równe), != (różne), <, >, <=. Pamiętaj: == porównuje, a pojedyncze = przypisuje — to jeden z najczęstszych błędów początkujących. Wynik porównania to wartość typu bool: True albo False.

elif i else — więcej ścieżek

Gdy możliwości jest więcej niż dwie, dokładasz kolejne warunki słowem elif, a gałąź else łapie wszystkie pozostałe przypadki:

temperatura = 8

if temperatura < 0:
    print("Mróz! Ubierz się ciepło.")
elif temperatura < 15:
    print("Chłodno — przydaje się kurtka.")
else:
    print("Ciepło. Można iść w koszulce.")

Python sprawdza warunki od góry i wykonuje pierwszą gałąź, której warunek jest spełniony — dla temperatury 8 będzie to „Chłodno". Dalszych warunków już nie sprawdza.

Warunek możesz budować też wprost z wartości typu bool z lekcji 1: zapis if czy_pada: jest poprawny i czytelny. Do łączenia kilku warunków służą słowa and (oba muszą być prawdziwe) oraz or (wystarczy, że prawdziwy jest jeden).

Pętla for — powtarzanie po znanym zakresie

Pętla for idealnie nadaje się, gdy z góry wiadomo, ile razy coś ma się powtórzyć. Funkcja range() generuje ciąg liczb:

for i in range(5):
    print("Powtórzenie numer", i)

Uwaga: range(5) daje liczby od 0 do 4 — pięć wartości, ale liczonych od zera. Zapis range(1, 6) da liczby od 1 do 5. Zmienną pętli (tutaj i) możesz wykorzystywać w obliczeniach:

suma = 0

for liczba in range(1, 11):
    suma = suma + liczba

print("Suma liczb od 1 do 10:", suma)   # 55

W każdym obrocie pętli do zmiennej suma dokładana jest kolejna liczba — dziesięć linii zastępuje nam trzy wiersze kodu.

Pętla while — powtarzanie „dopóki"

Pętla while działa inaczej: powtarza swój kod tak długo, jak długo warunek jest prawdziwy:

odliczanie = 3

while odliczanie > 0:
    print(odliczanie)
    odliczanie = odliczanie - 1

print("Start!")

Kluczowa jest linia zmniejszająca licznik — gdyby jej zabrakło, warunek nigdy nie przestałby być prawdziwy i pętla kręciłaby się w nieskończoność. To częsty błąd; jeśli program „zawiesi się" w pętli, w interpreterze online wystarczy przerwać wykonywanie kodu.

Kiedy którą pętlę wybrać? Sięgnij po for, gdy znasz liczbę powtórzeń albo chcesz przejść po kolejnych elementach — liczbach z range() czy znakach tekstu. Wybierz while, gdy liczba powtórzeń zależy od sytuacji — na przykład czekasz, aż użytkownik wpisze poprawne hasło albo odliczasz do zera.

Przykład łączony: FizzBuzz

FizzBuzz to klasyczne zadanie, które łączy oba narzędzia z tej lekcji. Program wypisuje liczby od 1 do 15, ale: podzielne przez 3 zastępuje słowem „Fizz", podzielne przez 5 — „Buzz", a podzielne przez 3 i 5 jednocześnie — „FizzBuzz". Do sprawdzania podzielności przyda się operator %, czyli reszta z dzielenia:

for liczba in range(1, 16):
    if liczba % 3 == 0 and liczba % 5 == 0:
        print("FizzBuzz")
    elif liczba % 3 == 0:
        print("Fizz")
    elif liczba % 5 == 0:
        print("Buzz")
    else:
        print(liczba)

Kolejność warunków ma znaczenie: sprawdzenie „i 3, i 5" musi być pierwsze, bo liczba 15 spełnia też każdy z warunków osobno — a Python wykonuje tylko pierwszą pasującą gałąź. Słowo and łączy dwa warunki: oba muszą być prawdziwe.

Ćwiczenie (10 minut): pętla wypisująca tabliczkę mnożenia.
  1. Utwórz zmienną liczba o wartości 7.
  2. Pętlą for i in range(1, 11) wypisz wiersze w formie „7 x 3 = 21".
  3. Zmień wartość zmiennej i sprawdź, że cała tabliczka aktualizuje się sama.
  4. Dla chętnych: zapisz tę samą pętlę przy użyciu while.

Rozwiązanie wzorcowe:

liczba = 7

for i in range(1, 11):
    print(liczba, "x", i, "=", liczba * i)

Najważniejsze pojęcia z tej lekcji

  • if / elif / else
  • operatory porównania
  • wcięcia
  • for
  • while
  • range()
  • operator %
  • and
Podsumowanie: if, elif i else pozwalają programowi podejmować decyzje, a pętle for i while — powtarzać kod dowolną liczbę razy. O wcięciach decyduje wszystko: to one mówią Pythonowi, które linie należą do warunku lub pętli. W lekcji 3 nauczysz się porządkować kod we własne funkcje i złożysz pierwszy kompletny program.