Dataczwartek, 13 sierpnia 2026 Czas18:51:04
← Python — programowanie

Lekcja 5. Pętla for w Pythonie — range() i iteracja po sekwencjach

latwy

Po co się tego uczymy?

Gdy WIESZ z góry, ile razy coś ma się powtórzyć (albo chcesz przejść po WSZYSTKICH elementach czegoś), pętla for jest naturalniejszym i bezpieczniejszym wyborem niż while — nie da się przez pomyłkę napisać nieskończonej pętli for z range(). To druga z dwóch podstawowych pętli Pythona, równie ważna na maturze co while.

Teoria

Pętla for w Pythonie działa INACZEJ niż w C#/Javie — nie ma tu klasycznego zapisu for (int i=0; i<n; i++). Python for zawsze PRZECHODZI PO ELEMENTACH jakiejś sekwencji (listy, tekstu, zakresu liczb). Składnia: for zmienna in sekwencja:.

Funkcja range() — generator liczb do iterowania:

  • range(5) → liczby 0, 1, 2, 3, 4 (start od 0, KOŃCOWA wartość NIE jest wliczana, więc range(5) to 5 liczb: 0-4).
  • range(2, 8)2, 3, 4, 5, 6, 7 (własny start, koniec PRZED podaną wartością).
  • range(0, 10, 2)0, 2, 4, 6, 8 (trzeci argument to KROK).
  • range(10, 0, -1)10, 9, 8, ..., 1 (krok UJEMNY pozwala liczyć wstecz).

Iteracja po innych sekwencjachfor równie dobrze przechodzi po tekście (for litera in "Python": — każda litera osobno) i po listach (poznasz dokładniej w ostatniej lekcji tego działu: for element in [1, 2, 3]:).

Funkcja enumerate() — gdy w pętli potrzebujesz JEDNOCZEŚNIE indeksu (numeru pozycji) i wartości, enumerate() daje obie naraz: for indeks, wartosc in enumerate(lista): — dużo czytelniejsze niż ręczne liczenie indeksu osobną zmienną.

Pętle zagnieżdżone — pętla for może zawierać KOLEJNĄ pętlę for w środku — klasyczne zastosowanie to tabliczka mnożenia (zewnętrzna pętla po wierszach, wewnętrzna po kolumnach) albo przetwarzanie danych dwuwymiarowych (siatka, plansza).

Wzorzec sumowania/zliczania — bardzo częsty schemat: zmienna wynikowa (np. suma = 0) zaczyna od wartości "neutralnej", a w KAŻDEJ iteracji pętli aktualizujemy ją (suma += x). Ten sam wzorzec działa dla sumy, iloczynu (start od 1, *=), zliczania (licznik += 1) i wielu innych agregacji.

break i continue w for — działają identycznie jak w pętli while: break natychmiast kończy CAŁĄ pętlę, continue pomija resztę BIEŻĄCEJ iteracji i przechodzi do następnej.

Schemat

range(5)          →  0, 1, 2, 3, 4        (5 liczb, licząc od zera)
range(2, 8)       →  2, 3, 4, 5, 6, 7    (start, koniec-PRZED)
range(0, 10, 2)   →  0, 2, 4, 6, 8       (start, koniec-przed, KROK)
range(10, 0, -1)  →  10,9,8,...,1        (KROK ujemny = liczenie wstecz)

PĘTLE ZAGNIEŻDŻONE - tabliczka mnożenia 3x3:
for i in range(1, 4):        # wiersze: 1, 2, 3
    for j in range(1, 4):    # kolumny: 1, 2, 3 (dla KAŻDEGO i)
        print(i * j, end=" ")
    print()                  # nowa linia po każdym wierszu
Wynik:
1 2 3
2 4 6
3 6 9

Przykład z życia

Aplikacja licząca sumę wydatków z paragonu przechodzi PĘTLĄ for po liście wszystkich pozycji zakupów i dodaje ich ceny do sumy — dokładnie ten sam wzorzec sumowania, którego nauczysz się w tej lekcji, tylko na prawdziwych danych zamiast przykładowych liczb.

petla_for.py

# Podstawowa pętla for z range()
for i in range(1, 6):
    print(f"Numer uczestnika: {i}")

# Iteracja po tekście
for litera in "PYTHON":
    print(litera, end=" ")   # P Y T H O N
print()

# Sumowanie w pętli - klasyczny wzorzec
suma = 0
for liczba in range(1, 11):
    suma += liczba
print(f"Suma liczb od 1 do 10: {suma}")   # 55

# enumerate() - indeks i wartość jednocześnie
uczniowie = ["Ala", "Bartek", "Celina"]
for indeks, imie in enumerate(uczniowie):
    print(f"{indeks + 1}. {imie}")

# Pętle zagnieżdżone - tabliczka mnożenia
for i in range(1, 4):
    for j in range(1, 4):
        print(i * j, end="t")
    print()   # nowa linia po każdym wierszu zewnętrznej pętli

Komentarz i wyjaśnienie kodu

range(1, 6) daje liczby 1-5, NIE 1-6 — górna granica NIGDY nie jest wliczana. To najczęstsza pułapka "o jeden" (ang. off-by-one) w pętlach for.

enumerate(uczniowie) zwraca PARY (indeks, wartość) dla każdego elementu — indeks + 1 w przykładzie zamienia numerację od zera (jak w Pythonie) na numerację od jedynki (bardziej naturalną dla człowieka, "1. Ala" zamiast "0. Ala").

W pętlach zagnieżdżonych print() BEZ argumentów (na końcu zewnętrznej pętli, ale POZA wewnętrzną) wypisuje pusty znak nowej linii — to sprawia, że kolejny wiersz tabliczki mnożenia zaczyna się od nowej linijki, a nie ciągnie się w jednym ciągu.

Ćwiczenie samodzielne

Uruchom kod i zmień zakres tabliczki mnożenia z 3x3 na 5x5. Następnie zmodyfikuj przykład z enumerate() tak, żeby wypisywał uczniów w kolejności OD OSTATNIEGO do pierwszego (wskazówka: range() z ujemnym krokiem albo funkcja reversed()).

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”.

PYTHON

Zadania do pracy własnej

  1. Wypisz pętlą for wszystkie liczby parzyste od 2 do 20 (wykorzystaj trzeci argument range() — krok).

  2. Napisz program obliczający silnię podanej przez użytkownika liczby (np. 5! = 5*4*3*2*1 = 120) używając pętli for i wzorca "mnożenia w pętli" (analogicznego do sumowania z przykładu, ale z *= zamiast +=, zaczynając od wynik = 1).

  3. Napisz program wypisujący tzw. "trójkąt Pascala" o zadanej liczbie wierszy — w każdym wierszu N wypisz N gwiazdek (np. dla 5 wierszy: 1 gwiazdka, potem 2, potem 3, 4, 5) używając pętli zagnieżdżonych. Dla chętnych: wyśrodkuj trójkąt spacjami, żeby przypominał prawdziwy trójkąt (wskazówka: metoda tekstowa .rjust() albo ręczne dodawanie spacji).

Typowe błędy

Zapominanie, że górna granica range() NIE jest wliczanarange(1, 10) daje liczby 1-9, nie 1-10; żeby uzyskać liczby WŁĄCZNIE do 10, trzeba napisać range(1, 11).

Ręczne liczenie indeksu zamiast użycia enumerate() — kod z osobną zmienną i = 0 zwiększaną ręcznie wewnątrz pętli for element in lista: działa, ale jest mniej czytelny i bardziej podatny na błędy niż wbudowany enumerate().

Umieszczenie print() (nowa linia) w NIEWŁAŚCIWYM miejscu w pętlach zagnieżdżonych — jeśli trafi do wnętrza pętli wewnętrznej zamiast na jej końcu (na poziomie pętli zewnętrznej), każda liczba w tabliczce mnożenia wyląduje w osobnej linii zamiast w jednym wierszu.

Nawiązanie do egzaminu zawodowego

Pętla for (szczególnie z range()) to najczęściej używana pętla w zadaniach maturalnych, gdzie liczba powtórzeń jest znana albo wynika z długości danych. W dziale "Algorytmy i złożoność" pętle zagnieżdżone for pojawiają się m.in. w sortowaniu bąbelkowym i przez wstawianie — a złożoność O(n²) tych algorytmów wynika WŁAŚNIE z DWÓCH zagnieżdżonych pętli for.