Przerwij misję!" break i continue
Dwa sposoby sterowania pętlą od środka — zatrzymać ją całkowicie lub pominąć jeden krok — i specjalny blok else, który wie, czy break.
Czasem trzeba wyjść z pętli wcześniej albo pominąć jeden krok, nie kończąc pętli W całości — są dwa słowa kluczowe i jeden szczególny sposób, by sprawdzić, czy break.
break to całkowicie przerwać ten cykl
for number in range(1, 100):
if number == 5:
break # cykl zatrzymuje się na dobre
print(number)
Będzie wydawać tylko 1, 2, 3, 4 – tak szybko, jak number staje się
5, pętla zostaje przerwana bez oczekiwania na pozostałe 94 wartości range().
break przerywa jedynie pętlę, w której się znajduje — kod po pętli działa normalnie. To nie jest analogia wyjścia z programu, lecz wyjścia z powtarzania.continue to pominąć ten krok
for number in range(1, 6):
if number == 3:
continue # pomiń resztę ciała w tym kroku
print(number)
Wyjście 1, 2, 4, 5 – liczba 3 jest pomijana, ale cykl trwa dalej, w przeciwieństwie do
break.
continue jedynie przerywa bieżący przepływ ciała — cykl sam trwa dalej i od następnego elementu. To jest odwrotne break, a nie jego łagodniejsza wersja.break i continue w pobliżu
| break | continue | |
|---|---|---|
| Co się dzieje | cykl zatrzymuje się na zawsze | obecna iteracja się przerwie, pętla trwa dalej |
| Kod po pętli | wykonany natychmiast | kursuje dopiero po zakończeniu pętli |
| Częsty przykład | znaleźli to, czego szukali — nie ma potrzeby kontynuować | ten element nie pasuje — pomijamy właśnie go |
break w while True
Najczęstsze miejsce dla break — cykl while
True, gdzie warunek zatrzymania łatwiej sprawdzić w środku ciała:
komanda = ""
while True:
komanda = input(„Wprowadź komendę (stop - wyjście): ”)
if komanda == "stop":
break
print(„Wykonuję:”, komanda)
while do opublikowania continue PRZED wierszem, który zmienia stan (na przykład, count += 1), niebezpieczne: ten łańcuch znaków będzie pomijany za każdym razem, gdy zostanie wywołany continue, a ten cykl może się nigdy nie skończyć. Przyjrzymy się bliżej tutorialowi dotyczącemu pętli debugowania.loop-else jest else cyklu, a nie if
Cykle for oraz while rzadko jedzą
Używaną, ale czasem bardzo wygodną funkcją jest blok else,
które są wykonywane, tylko wtedy, gdy pętla kończyła się bez break:
chisla = [4, 8, 15, 16, 23, 42]
for n in chisla:
if n == 100:
print(„Znalazłem 100!”)
break
else:
print(„100 nie znalezionych ani razu”)
else tak samo jak if, sens jest zupełnie inny. else u if oznacza „jeśli warunek jest fałszywy”. else w pętli oznacza „jeśli pętla zakończyła się sama, a nie przez break”. Jeśli wewnątrz pętli nie było break w ogóle — blok else zawsze zostanie spełnione zaraz po zakończeniu cyklu.Mini-projekt: cykl zespołów
Będziemy zbierać while True, break oraz
pracuj z łańcuch znakówi/warunkami z rozdziałów 8-9 w małej, interaktywnej pętli. To jest tutorial
Demonstracja techniki, a nie zastępstwo dla interpretera PySH z wprowadzenia kursu:
zhurnal = []
while True:
komanda = input(„Drużyna (help/list/stop):”).strip().lower()
if komanda == "stop":
print(„Kończę pracę.”)
break
elif komanda == "help":
print(„Dostępne: help, list, stop”)
elif komanda == "list":
print(„Magazyn:”, zhurnal)
else:
zhurnal.append(komanda)
print(f"Dodane do dziennika: {komanda}")