W Pythonie do dyspozycji mamy dwa rodzaje pętli: for oraz while. Pierwszą z wyminionych opisałem w osobnym artykule Python: pętla for. Zasadniczo, oba rodzaje pętli służą temu samemu, czyli wykonaniu bloku instrukcji wielokrotnie. Pętla for jest przydatna, gdy z góry wiemy ile razy blok instrukcji ma zostać wykonany. Pętla while powtarza sekwencję instrukcji, dopóki spełnione jest określone wyrażenie. Warunek podawany jest przed treścią pętli i sprawdzany przed każdym wykonaniem jej treści. Zwykle pętli while używamy, gdy nie wiemy z góry jaka będzie dokładna liczba iteracji.
Zasada działania pętli while w języku Python
cyfra = 0
while cyfra < 3:
cyfra = cyfra + 1
print(str(cyfra) + " witaj")
W przykładzie powyżej inicjalizujemy zmienną cyfra wartością 0, po czym przechodzimy do pętli while. Warunkiem wykonania bloku instrukcji jest wartość zmiennej cyfra poniżej 3. Wewnątrz pętli, za każdą iteracją zwiększamy wartość zmiennej cyfra o 1 i wyświetlamy na konsoli tekst “witaj”. Instrukcje wewnątrz pętli zostaną wykonane trzy razy, po czym zmienna cyfra osiągnie wartość 3 i nie zostanie spełniony warunek cyfra<3. Zatem wynik działania programu będzie następujący:
Wynik
1 witaj
2 witaj
3 witaj
Pętla while w jednej linii
# Pętla while w jednej linii
lista = []
while len(lista) < 5: lista.append(1)
print(lista)
W przykładzie powyżej tworzymy pustą listę. Pętla w każdej iteracji dodaje do listy element o wartości 1. Instrukcja jest powtarzana dopóki długość listy jest mniejsza niż 5. Po zakończeniu działania pętli wyświetlamy listę. Wynik działania programu jest następujący:
Wynik
[1, 1, 1, 1, 1]
Przerwanie działania pętli – instrukcja break i instrukcja continue
Mamy do dyspozycji dwie instrukcje sterujących, które możemy wykorzystać do przerwania działania pętli:
- Break – natychmiast kończy pętlę. Program przechodzi do pierwszej instrukcji następującej po treści pętli.
- Continue – przerywa bieżącą iterację pętli. Program przeskakuje na początek pętli, a wyrażenie sterujące jest ponownie oceniane w celu ustalenia, czy pętla zostanie wykonana ponownie, czy też zakończy się.
Przykład – instrukcja break
# Przykład instrukcji break
n = -5
while n < 0:
n += 1
if n == -2:
break
print(n) # wypisz n
print('Koniec')
Wynik
-4
-3
Koniec
W przykładzie powyżej widzimy, że działanie instrukcja break przerwała działanie pętli w momencie, gdy wartość zmiennej n wynosiła -2. Program automatycznie przeskoczył do instrukcji następującej po pętli.
Przykład – instrukcja continue
# Przykład instrukcji continue
n = -5
while n < 0:
n += 1
if n == -2:
continue
print(n) # wypisz n
print('Koniec')
Wynik
-4
-3
-2
-1
Koniec
W przykładzie powyżej widzimy, że w momencie, gdy wartość zmiennej n wynosiła -2, to program przeskoczył do następnej iteracji, pomijając linię print.
Nieskończona pętla while
Jednym z zagadnień, które warto rozważyć jest utworzenie nieskończonej pętli, co może nie wydawać się oczywiste. Rozważmy następujący przykład:
# Pętla nieskończona
while True:
print("A")
Program ten będzie wyświetlał na konsoli tekst “A” w “nieskończoność”, a w zasadzie do momentu, gdy przerwiemy jego działanie (na przykład przez użycie skrótu klawiszowego ctrl+c). Przyczyną jest to, że warunek decydujuący o kontynuowaniu działania pętli jest zawsze spełniony (True). Kiedy zatem taka pętla może się przydać? Możesz na przykład napisać kod dla usługi, która uruchamia się i działa cały czas, akceptując żądania. Ponadto, pętle można przerwać za pomocą instrukcji break, tak jak to przedstawiono w kodzie poniżej. Takie rozwiązanie może okazać się prostsze niż użycie warunku w pierwszej linii pętli.
Przykład – pętla nieskończona
while True:
if <wyrażenie>: # Pierwszy warunek zakończenia pętli
break
if <wyrażenie>: # Drugi warunek zakończenia pętli
break
if <wyrażenie>: # Trzeci warunek zakończenia pętli
break
Zastosowanie nieskończonej pętli while w Pythonie
Nieskończoną pętlę while możemy zastosować na przkład do wczytywania danych od użytkownika, aż do wprowadzenia określonej wartości. Poniższy kod pokazuje jak obliczyć sumę wprowadzonych przez użytkownika w ten sposób liczb.
# Inicjalizujemy sumę
suma = 0
# Pobieramy dane od użytkownika w pętli while
while True:
# Wczytujemy liczbę od użytkownika
liczba = int(input("Podaj liczbę całkowitą (0 aby zakończyć): "))
# Dodajemy liczbę do sumy
suma += liczba
# Sprawdzamy, czy użytkownik wprowadził 0
if liczba == 0:
break # Przerywamy pętlę, gdy użytkownik podał 0
# Wyświetlamy sumę liczb wprowadzonych przez użytkownika
print("Suma liczb wynosi:", suma)
Widzimy w linii 5, że pętla ma warunek True, zatem powinna działać w nieskończoność. Jednak w linii 14 znajduje się instrukcja break, która jest wywołana pod warunkiem wprowadzenia przez użytkownika liczby 0.
Klauzula else
Python pozwala na opcjonalną klauzulę else na końcu pętli while. Ta cecha jest niespotykana w większości innych języków programowania. Składnia jest następująca:
while <wyrażenie>:
<instrukcja 1>
else:
<instrukcja 2>
Możemy się zastanowić jaka jest różnica pomiędzy umieszczeniem instrukcji bezpośrednio po pętli, a użyciem klauzuli else. Różnica polega na tym, że program wywoła instrukce zawarte wewnątrz klauzuli else jedynie wtedy, gdy pętla zakończy swoje działanie poprzez niespełnienie warunku określonego w pierwszej linii pętli. Jeśli natomiast pętla zostanie przerwana poprzez break lub continue, to instrukcje znajdujące w else nie zostaną wywołane.
n = -5
while n < 0:
n += 1
print(n) # wypisz wartość n
if n == -2:
break
else:
print('Koniec')
Wynik
-4
-3
-2
W przykładzie powyżej widzimy, że program nie wywołał instrukcji print(‘Koniec’) ponieważ instrukcja break przerwała działanie pętli.
Zadania – Python pętle
- Napisz program, który oblicza silnię podanej przez użytkownika liczby.
- Napisz program, który oblicza średnią arytmetyczną z serii liczb podawanych przez użytkownika, zakończonych wprowadzeniem wartości 0.
- Napisz program, który znajduje największą liczbę spośród wprowadzonych przez użytkownika liczb dodatnich, zakończonych wprowadzeniem wartości ujemnej.
- Napisz program, który generuje ciąg Fibonacciego do podanej przez użytkownika liczby n. Ciąg Fibonacciego to ciąg liczb, w którym każda liczba jest sumą dwóch poprzednich liczb (zaczynając od 0 i 1). Na przykład: 0, 1, 1, 2, 3, 5, 8, 13, …
Podsumowanie
Z tego artykułu nauczyłeś się jak wykorzystać pętle while w Pythonie. Wiesz teraz jak:
- konstruować proste i złożone pętle while,
- przerwać wykonywanie pętli za pomocą break i continue,
- używać nieskończonej pętli,
- używać klauzuli else wraz z pętlą while.
#python pętla while #kurs python