Instrukcja while() else
Konstrukcja while … else jest mniej znanym, ale bardzo przydatnym elementem Pythona.
Jej działanie bywa z początku zaskakujące, ponieważ else nie działa tak jak w instrukcji warunkowej if, lecz ma specjalne znaczenie.
Blok else wykonuje się tylko wtedy, gdy pętla while zakończy się “naturalnie”, to znaczy kiedy jej warunek stanie się fałszywy.
Natomiast jeśli pętla zostanie przerwana instrukcją break — blok else zostanie pominięty.
To powoduje, że konstrukcja ta świetnie nadaje się do zadań typu:
szukanie czegoś w danych,
wykonywanie pętli do pierwszego spełnienia warunku,
sprawdzanie, czy pętla wykonała „pełny przebieg”.
Szukanie liczby w liście target = 10
Jak działa program:
Jeśli w liście występuje szukana wartość to pętla while zostanie przerwana przez instrukcję break i wtedy blok else się nie wykona.
Jeśli pętla dojdzie do końca listy i nie znajdzie wartości — warunek pętli stanie się fałszywy, pętla zakończy się normalnie i instrukcje zawarte w else zostaną wykonane
Sprawdzanie, czy liczba jest pierwsza
Jak działa program:
Jeśli zostanie znaleziony dzielnik liczby (n % d == 0), pętla zostanie przerwana przez instrukcję break → instrukcja zawarte w klauzuli else nie zostaną wykonane
Jeśli pętla dojdzie do momentu d*d > n bez przerwania, oznacza to brak dzielników → else zostaje wykonane, więc liczba jest pierwsza.
Pętla warunkowa, która wygasza się sama:
Jak działa program:
Warunek pętli po kilku krokach (dokładnie po licznik krokach) stanie się fałszywy. Ponieważ nie występuje instrukcja break, instrukcje zapisane po else zawsze się wykonają czyli po zakończonym odliczaniu zostanie wypisany tekst „Zaczynamy”.