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
forlubwhile(czylifor ... 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ęść
elsewykona 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, blokelsezostanie pominięty.
Jak to działa krok po kroku?
Przykład działania break (kroki):
- Wejście do pętli.
- Dla bieżącej iteracji wykonaj kod w ciele pętli.
- Jeśli napotkamy
break, natychmiast przerwij pętlę i przejdź dalej. - Jeśli nie było
breaki pętla naturalnie się skończy (np. brak kolejnych elementów lub warunekwhilestał się fałszywy), to wykona sięelse(jeśli on istnieje).
Przykład działania continue (kroki):
- Wejście do pętli.
- Dla bieżącej iteracji wykonuj kod do momentu napotkania
continue. - Po
continuepomijamy 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 == 0jest prawdziwy. - Wykonuje się
printibreak. Pętla kończy się natychmiast. - Blok
elsenie zostanie wykonany, ponieważ pętla została przerwana przezbreak.
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 —
breakicontinuemuszą być wewnątrz pętli. breakprzerywa 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
elsepo pętli nie jest tym samym, coif ... else. Wykonuje się tylko, gdy pętla nie została przerwana przezbreak.
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
forlubwhile. - 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
elsepo 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 komunikatSpróbuj najpierw napisać rozwiązanie samodzielnie. Jeśli utkniesz, wklej swój kod tutaj — pomogę Ci znaleźć błąd i wyjaśnię, co poprawić.