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”.

Przykład 1

Szukanie liczby w liście target = 10

Linia 1. liczby znak równości otwórz nawias kwadratowy 3 przecinek 5 przecinek 8 przecinek 10 przecinek 15 zamknij nawias kwadratowy. Linia 2. szukana znak równości 10. Linia 3. i znak równości 0. Linia 5. while i otwórz nawias ostrokątny len otwórz nawias okrągły liczby zamknij nawias okrągły dwukropek. Linia 6. if liczby otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości szukana dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Znaleziono liczbę wykrzyknik cudzysłów zamknij nawias okrągły. Linia 8. break. Linia 9. i plus znak równości 1. Linia 10. else dwukropek. Linia 11. print otwórz nawias okrągły cudzysłów Liczby nie znaleziono kropka cudzysłów zamknij nawias okrągły.

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

Przykład 2

Sprawdzanie, czy liczba jest pierwsza

Linia 1. n znak równości 29. Linia 2. d znak równości 2. Linia 4. while d asterysk d otwórz nawias ostrokątny znak równości n dwukropek. Linia 5. if n procent d znak równości znak równości 0 dwukropek. Linia 6. print otwórz nawias okrągły cudzysłów Liczba nie jest pierwsza kropka cudzysłów zamknij nawias okrągły. Linia 7. break. Linia 8. d plus znak równości 1. Linia 9. else dwukropek. Linia 10. print otwórz nawias okrągły cudzysłów Liczba jest pierwsza kropka cudzysłów zamknij nawias okrągły.

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.

Przykład 3

Pętla warunkowa, która wygasza się sama:

Linia 1. licznik znak równości 5. Linia 3. while licznik zamknij nawias ostrokątny 0 dwukropek. Linia 4. print otwórz nawias okrągły cudzysłów Odliczanie dwukropek cudzysłów przecinek licznik zamknij nawias okrągły. Linia 5. licznik minus znak równości 1. Linia 6. else dwukropek. Linia 7. print otwórz nawias okrągły cudzysłów Zaczynamy wykrzyknik cudzysłów zamknij nawias okrągły.

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”.