Break i Continue — kontrolowanie pętli (oraz for/while z else)

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Break i Continue — kontrolowanie pętli (oraz for/while z else)
In Progress

Przerwanie i pomijanie iteracji w pętlach (break, continue) oraz konstrukcje for ... else i while ... else

W tej lekcji wyjaśnimy, jak:

  • przerwać pętlę wcześniej (słowo kluczowe break),
  • pominąć tylko bieżącą iterację pętli (słowo kluczowe continue),
  • zrozumieć, kiedy działa else po pętli for lub while (czyli for ... else / while ... else).

Proste wyjaśnienie

  • break — natychmiast kończy działanie najbliższej pętli i program przechodzi do instrukcji po tej pętli.
  • continue — pomija resztę kodu w ciele pętli dla bieżącej iteracji i od razu zaczyna następną iterację.
  • for ... else / while ... else — część else wykona się tylko wtedy, gdy pętla zakończy się naturalnie (gdy warunek pętli stanie się fałszywy lub gdy pętla przejdzie przez wszystkie elementy). Jeśli w trakcie działania pętli wykona się break, blok else zostanie pominięty.

Jak to działa krok po kroku?

Przykład działania break (kroki):

  1. Wejście do pętli.
  2. Dla bieżącej iteracji wykonaj kod w ciele pętli.
  3. Jeśli napotkamy break, natychmiast przerwij pętlę i przejdź dalej.
  4. Jeśli nie było break i pętla naturalnie się skończy (np. brak kolejnych elementów lub warunek while stał się fałszywy), to wykona się else (jeśli on istnieje).

Przykład działania continue (kroki):

  1. Wejście do pętli.
  2. Dla bieżącej iteracji wykonuj kod do momentu napotkania continue.
  3. Po continue pomijamy resztę ciała pętli i wracamy do sprawdzenia warunku pętli / zaczynamy następną iterację.

Przykład 1 — szukanie pierwszej liczby parzystej (for ... else)

liczby = [3, 7, 9, 10, 11]
for x in liczby:
    if x % 2 == 0:
        print("Pierwsza parzysta:", x)
        break
else:
    print("Nie znaleziono żadnej parzystej")

Co się stanie tutaj?

  • Pętla po kolei sprawdza 3, 7, 9, 10... Gdy natknie się na 10, warunek x % 2 == 0 jest prawdziwy.
  • Wykonuje się print i break. Pętla kończy się natychmiast.
  • Blok else nie zostanie wykonany, ponieważ pętla została przerwana przez break.

Przykład 2 — pomijanie niechcianej wartości (continue)

for i in range(1, 8):
    if i == 4:
        continue  # pomiń 4
    print(i)

Wynik: 1 2 3 5 6 7 — liczba 4 została pominięta, bo po napotkaniu continue program od razu przeszedł do następnej iteracji.

Przykład 3 — while ... else

i = 1
found = False
while i <= 5:
    if i == 7:      # przykładowy warunek, tu nigdy prawdziwy dla i od 1 do 5
        found = True
        break
    i += 1
else:
    print("Pętla zakończyła się naturalnie (bez break).")

W tym przykładzie wartość warunku i == 7 nigdy nie zajdzie, więc pętla zakończy się naturalnie i wykona się blok else.

Kilka ważnych uwag i najczęstsze błędy

  • Indentacja jest ważna — break i continue muszą być wewnątrz pętli.
  • break przerywa tylko najbliższą pętlę. Jeśli masz zagnieżdżone pętle, tylko wewnętrzna pętla zostanie przerwana.
  • Aby przerwać zewnętrzną pętlę z wnętrza pętli zagnieżdżonej, możesz użyć np. zmiennej-flag (lub wywołać funkcję/zgłosić wyjątek), ale to temat na osobną lekcję.
  • Blok else po pętli nie jest tym samym, co if ... else. Wykonuje się tylko, gdy pętla nie została przerwana przez break.

Przykład zagnieżdżonej pętli — break tylko wewnętrznej

for a in range(3):
    for b in range(3):
        if b == 1:
            break   # przerywa tylko wewnętrzną pętlę (b-loop)
    print("Po wewnętrznej pętli, a =", a)

Ten kod przerwie wewnętrzną pętlę, ale zewnętrzna nadal będzie kontynuowana dla kolejnych wartości a.

Zadanie dla Ciebie (zachęta do samodzielności)

Napisz program, który przegląda listę słów i wypisuje pierwsze słowo dłuższe niż 5 liter. Jeśli nie ma takiego słowa — wypisz komunikat.

Wskazówki (bez podawania gotowego rozwiązania):

  • Zastanów się, jak przejść po wszystkich elementach listy — użyj for lub while.
  • W każdej iteracji sprawdź długość słowa funkcją len(slowo).
  • Gdy znajdziesz słowo dłuższe niż 5 liter, wypisz je i przerwij pętlę za pomocą break.
  • Jeśli pętla zakończy się naturalnie (nie znalazłeś żadnego takiego słowa), użyj else po pętli, aby wypisać komunikat „Nie znaleziono”.
  • Przykładowy przebieg testu: dla listy ["ala","kot","motyl","samochod"] program powinien wypisać pierwsze słowo dłuższe niż 5 liter (tu: "samochod"), albo komunikat, jeśli takiego nie ma.

Mała pomoc w formie pseudokodu:

dla każdego słowa w liście:
    jeśli długość słowa > 5:
        wypisz to słowo
        przerwij pętlę
jeśli pętla kończy się bez przerwania:
    wypisz "Nie znaleziono" lub podobny komunikat

Spróbuj najpierw napisać rozwiązanie samodzielnie. Jeśli utkniesz, wklej swój kod tutaj — pomogę Ci znaleźć błąd i wyjaśnię, co poprawić.