Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
while, gdy powtarzanie zależy od zmieniającego się stanu.break, gdy cel zostanie znaleziony.continue.Użyj while, gdy program ma powtarzać działanie, dopóki warunek pozostaje prawdziwy:
while attempts < max_attempts:
...W przeciwieństwie do pętli for, pętla while nie aktualizuje automatycznie swojego stanu sterującego. Twój kod musi zmieniać wartość używaną w warunku, w przeciwnym razie pętla może działać w nieskończoność.
break natychmiast opuszcza całą pętlę. Użyj go, gdy dalsze działanie byłoby zbędne, na przykład po znalezieniu sprawnego serwera.
continue pomija pozostałe instrukcje bieżącej iteracji i wraca do warunku pętli. Przed kontynuowaniem upewnij się, że wymagana aktualizacja indeksu lub licznika już się odbyła; w przeciwnym razie pętla może bez końca powtarzać ten sam element.
Używaj for dla znanego zakresu liczbowego lub bezpośredniej iteracji po wartościach. Używaj while, gdy moment zatrzymania zależy od stanu zmieniającego się w trakcie wykonywania.
Aktualizacja licznika w końcu sprawia, że warunek staje się fałszywy.
attempt = 1
while attempt <= 3:
print(f"Attempt {attempt}")
attempt += 1Wynik:
Attempt 1
Attempt 2
Attempt 3Bez attempt += 1 ta pętla nigdy by się nie zakończyła.
break kończy pętlę, gdy tylko zostanie znaleziony poprawny status.
statuses = ["error", "error", "ready"]
index = 0
while index < len(statuses):
status = statuses[index]
index += 1
if status == "ready":
print(f"Ready on check {index}")
breakWynik:
Ready on check 3Po sukcesie kolejna iteracja nie jest potrzebna.
continue pomija wypisanie nieprawidłowej wartości, ale pozwala pętli działać dalej.
readings = [18, -1, 22]
index = 0
while index < len(readings):
reading = readings[index]
index += 1
if reading == -1:
continue
print(reading)Wynik:
18
22Indeks jest aktualizowany przed continue, więc pętla posuwa się naprzód.
continue i breakJeden warunek pomija bezużyteczne dane, a inny kończy przetwarzanie.
commands = ["", "status", "stop", "deploy"]
index = 0
while index < len(commands):
command = commands[index]
index += 1
if not command:
continue
if command == "stop":
break
print(command)Wynik:
statusPuste polecenie jest pomijane, a przetwarzanie kończy się na stop.
| Potrzeba | Narzędzie |
|---|---|
| Powtarzanie, dopóki stan pozostaje poprawny | while |
| Całkowite wyjście z pętli | break |
| Pominięcie tylko tej iteracji | continue |
| Uniknięcie pętli nieskończonej | Aktualizacja stanu sterującego |
break, gdy należy pominąć tylko jeden element.continue przed wymaganą aktualizacją indeksu.while dla prostego, stałego zakresu, gdy for jest czytelniejsze.