Pętla while to podstawowa konstrukcja sterująca w Pythonie, pochodząca z języków rodziny C, ale zaimplementowana z uwzględnieniem prostoty składni Python. Wykonuje blok kodu, dopóki warunek jest prawdziwy. Historycznie była szeroko stosowana w zadaniach z nieznaną liczbą iteracji (np. oczekiwanie na zdarzenie lub uzyskiwanie wejścia od użytkownika).
Największym problemem przy pracy z while jest możliwość zakleszczenia się w nieskończoność lub uzyskania niepoprawnych wyników, jeśli warunek jest sformułowany błędnie lub zmienne związane z tym warunkiem nie są aktualizowane. Ważne jest, aby zwrócić szczególną uwagę na zmianę stanu w ciele pętli i kontrolę wyjścia.
Rozwiązanie - jednoznacznie określić warunek wyjścia, używać break do awaryjnego zakończenia, starannie projektować kolejność zmiany zmiennych i w razie potrzeby używać liczników iteracji.
Przykład kodu:
n = 5 while n > 0: print(n) n -= 1 print('Gotowe!')
Kluczowe cechy:
else (wykonanie po zakończeniu bez break)Czy można używać operatora else z pętlą while w Pythonie i co on robi?
Tak, można. Blok else jest wykonywany tylko wtedy, gdy pętla zakończyła się bez użycia operatora break.
n = 3 while n > 0: print(n) n -= 1 else: print('Pętla zakończona normalnie')
Co się stanie, jeśli warunek w while zawsze będzie prawdziwy (np. while True)?
Taka pętla będzie nieskończona, chyba że wewnątrz ciała pętli użyty zostanie operator break lub wystąpi wyjątek. Często stosuje się to w aplikacjach serwerowych lub w przetwarzaniu zdarzeń.
Jak uniknąć błędu, gdy zmienna wpływająca na warunek nie zmienia się wewnątrz ciała while?
Należy być uważnym na logikę wewnątrz pętli. Jeśli zmienna pozostanie niezmienna, pętla będzie nieskończona. To klasyczne źródło błędów dla początkujących.
Programista realizuje pętlę oczekiwania na dane od użytkownika:
user_input = '' while user_input != 'yes': print('Powiedz "yes" aby wyjść')
Plusy:
Minusy:
Prawidłowa realizacja - uwzględnienie aktualizacji stanu:
user_input = '' while user_input != 'yes': user_input = input('Powiedz "yes" aby wyjść: ')
Plusy:
Minusy: