Dataniedziela, 9 sierpnia 2026 Czas06:43:38
← Python — programowanie

Lekcja 4. Pętla while w Pythonie — powtarzanie, dopóki warunek jest spełniony

latwy

Po co się tego uczymy?

Gdy NIE WIESZ z góry, ile razy program ma coś powtórzyć (np. "pytaj o hasło, dopóki użytkownik nie poda poprawnego"), pętla while jest jedynym sensownym rozwiązaniem. To fundament programów interaktywnych — walidacji danych, menu, gier — i częsty temat zadań maturalnych.

Teoria

Pętla while powtarza blok kodu TAK DŁUGO, JAK warunek pozostaje prawdziwy (True). Składnia: while warunek:, a pod spodem (wcięty) kod wykonywany wielokrotnie.

Cztery elementy każdej poprawnej pętli while:

  1. warunek początkowy — musi dać się ocenić jako True/False;
  2. ciało pętli — instrukcje wykonywane w kółko;
  3. zmienna sterująca — zwykle licznik albo flaga, od której zależy warunek;
  4. modyfikacja zmiennej sterującej WEWNĄTRZ pętli — coś musi się zmienić, żeby pętla kiedyś się zakończyła.

Pętla nieskończona — jeśli zapomnisz o punkcie 4 (modyfikacji zmiennej sterującej), warunek nigdy nie stanie się False i program będzie działał w nieskończoność (trzeba go przerwać ręcznie, np. Ctrl+C w terminalu). To NAJCZĘSTSZY błąd początkujących z pętlą while.

break — natychmiastowe przerwanie pętli — instrukcja break KOŃCZY działanie pętli NATYCHMIAST, niezależnie od tego, czy warunek while jest nadal prawdziwy. Przydatne np. przy szukaniu elementu — gdy go znajdziemy, nie ma sensu kontynuować.

continue — pominięcie reszty iteracjicontinue od razu przeskakuje do NASTĘPNEGO sprawdzenia warunku, pomijając pozostałe instrukcje w BIEŻĄCEJ iteracji (ale NIE kończy całej pętli, jak break).

Pętla while True: z warunkiem wyjścia w środku — bardzo częsty wzorzec: zamiast skomplikowanego warunku na początku, pętla "zawsze się kręci" (while True:), a wyjście z niej następuje przez break gdzieś w środku, po sprawdzeniu konkretnej sytuacji (np. poprawnego hasła). To wygodne, gdy warunek zależy od czegoś, co dzieje się DOPIERO wewnątrz pętli.

Schemat

while warunek:
    (kod wykonywany wielokrotnie)
    (coś musi zmienić warunek, inaczej pętla NIESKOŃCZONA!)

PRZYKŁAD - licznik prób logowania:
  proby = 0
  while proby < 3:
      ...sprawdź hasło...
      jeśli błędne: proby += 1   ← TO zmienia warunek
      jeśli poprawne: break       ← natychmiastowe wyjście

WZORZEC "while True + break":
  while True:
      dane = input("Podaj liczbę (0 = koniec): ")
      if dane == "0":
          break          ← wyjście z pętli
      print(f"Podałeś: {dane}")

Przykład z życia

Bankomat pytający o PIN: program w kółko prosi o kod, dopóki nie zostanie podany poprawny PIN ALBO nie wyczerpie się limit 3 prób (po czym karta zostaje zablokowana) — to dokładnie wzorzec pętli while z licznikiem prób i instrukcją break po sukcesie.

petla_while.py

# Podstawowa pętla while - liczenie do 5
licznik = 1
while licznik <= 5:
    print(licznik)
    licznik += 1   # KLUCZOWE - bez tego pętla byłaby nieskończona!
print("Koniec liczenia")

# Pętla z warunkiem zależnym od danych użytkownika
haslo_docelowe = "python123"
proba = ""
while proba != haslo_docelowe:
    proba = input("Podaj hasło: ")
print("Dostęp przyznany!")

# while True + break - wzorzec "menu z wyjściem"
suma = 0
while True:
    tekst = input("Podaj liczbę do zsumowania (0 = zakończ): ")
    liczba = int(tekst)
    if liczba == 0:
        break          # natychmiastowe wyjście z pętli
    suma += liczba
print(f"Suma podanych liczb: {suma}")

Komentarz i wyjaśnienie kodu

W pierwszym przykładzie licznik += 1 MUSI znaleźć się WEWNĄTRZ pętli (na tym samym poziomie wcięcia co print(licznik)) — gdyby był poza pętlą (mniej wcięty), licznik nigdy by się nie zwiększył i pętla działałaby w nieskończoność.

W drugim przykładzie warunek pętli (proba != haslo_docelowe) jest sprawdzany PRZED każdą iteracją — jeśli użytkownik za PIERWSZYM razem poda poprawne hasło, ciało pętli wykona się DOKŁADNIE RAZ.

Wzorzec while True: z break jest wygodny, gdy trudno sformułować warunek NA POCZĄTKU pętli (bo zależy od danych, które dopiero pojawią się w środku) — zamiast tego pętla "kręci się zawsze", a decyzję o zakończeniu podejmujemy w dogodnym momencie wewnątrz, instrukcją break.

Ćwiczenie samodzielne

Uruchom trzeci przykład (sumowanie liczb) i sprawdź, że wpisanie 0 od razu kończy program z poprawną sumą. Zmodyfikuj kod tak, żeby zamiast sumy liczył ŚREDNIĄ podanych liczb (będziesz potrzebować dodatkowego licznika, ile liczb podano).

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. Napisz program, który wypisuje kolejne liczby parzyste od 2 do 20 przy użyciu pętli while.

  2. Napisz program symulujący prosty bankomat: użytkownik ma maksymalnie 3 próby podania poprawnego PIN-u (ustal PIN na sztywno w kodzie, np. "1234"). Po 3 błędnych próbach wypisz "Karta zablokowana", po poprawnej — "Dostęp przyznany" i natychmiast zakończ pętlę.

  3. Napisz program obliczający sumę cyfr podanej przez użytkownika liczby całkowitej metodą while (bez zamiany liczby na tekst) — wskazówka: liczba % 10 daje ostatnią cyfrę, a liczba // 10 "ucina" tę cyfrę. Powtarzaj, dopóki liczba nie stanie się równa 0.

Typowe błędy

Zapominanie o modyfikacji zmiennej sterującej wewnątrz pętli — najczęstsza przyczyna pętli nieskończonej; zawsze sprawdź, czy coś w ciele pętli realnie zbliża warunek do False.

Umieszczenie modyfikacji zmiennej sterującej w NIEWŁAŚCIWYM miejscu (np. przed sprawdzeniem warunku zamiast po przetworzeniu danych) może dać wynik "o jeden" błędny (za mało lub za dużo powtórzeń).

Używanie while tam, gdzie lepszy byłby for — jeśli liczba powtórzeń jest ZNANA Z GÓRY (np. "policz coś dla liczb od 1 do 10"), pętla for (kolejna lekcja) jest naturalniejszym wyborem i mniej podatna na błąd pętli nieskończonej.

Nawiązanie do egzaminu zawodowego

Pętla while pojawia się na maturze wszędzie tam, gdzie liczba powtórzeń zależy od DANYCH WEJŚCIOWYCH, a nie jest ustalona z góry — np. "wczytuj liczby, dopóki użytkownik nie wpisze 0" albo "szukaj, dopóki nie znajdziesz". W dziale "Algorytmy i złożoność" zobaczysz while w praktycznie każdym algorytmie iteracyjnym — od algorytmu Euklidesa po wyszukiwanie binarne.