Pętla for a pętla while w Pythonie: kiedy użyć której
Obie pętle powtarzają kod, więc początkujący często zastanawiają się, którą wybrać. Prosta zasada: użyj pętli for, gdy wiesz, po czym iterujesz, a pętli while, gdy czekasz, aż coś się zmieni. Każdy przykład poniżej został uruchomiony, a pokazany wynik jest dokładny.
for z range: znana liczba powtórzeń
range(3) daje 0, 1 i 2. Zmienna pętli przyjmuje kolejno każdą z tych wartości. Koniec range nigdy nie jest wliczany.
for i in range(3):
print(i)Wynik:
0 1 2
for po liście: każdy element
Pętla for może przejść bezpośrednio przez listę, ciąg znaków, słownik i cokolwiek innego, po czym można przejść element po elemencie. Nie potrzebujesz indeksu.
for part in ["wrench", "cable"]:
print(part)Wynik:
wrench cable
while: dopóki coś się nie zmieni
Pętla while sprawdza swój warunek przed każdym przebiegiem. Coś wewnątrz pętli musi zmienić ten warunek, inaczej pętla nigdy się nie zakończy. Tutaj bateria traci 3 jednostki, dopóki nie zostanie za mało energii, a z góry nie wiesz, ile będzie przebiegów.
battery = 10
steps = 0
while battery >= 3:
battery -= 3
steps += 1
print(steps)Wynik:
3
break i continue
break natychmiast opuszcza pętlę. continue pomija resztę tego przebiegu i przechodzi do następnego. Oba działają w pętlach for i while.
for n in range(1, 8):
if n % 2 == 0:
continue
if n > 5:
break
print(n)Wynik:
1 3 5
Nieskończona pętla
Pętla while, której warunek nigdy nie staje się fałszywy, działa w nieskończoność. Jeśli program wygląda na zawieszony, sprawdź, czy zmienna w warunku naprawdę zmienia się wewnątrz pętli. Na tej stronie program działający dłużej niż pięć sekund jest zatrzymywany za ciebie.
Częste pytania
- Czy każdą pętlę for da się zapisać jako while?
- Tak, ale jest to dłuższe i łatwiej o błąd, bo licznik musisz kontrolować samodzielnie. Zawsze wybieraj for, gdy przechodzisz przez kolekcję lub stały zakres.
- Jaka jest różnica między break a continue?
- break kończy całą pętlę. continue pomija tylko bieżący przebieg i przechodzi do następnego.
- Dlaczego moja pętla while się nie kończy?
- Warunek pozostaje prawdziwy, bo nic w pętli nie zmienia zmiennej, którą warunek sprawdza. Dodaj linijkę, która przesuwa ją w stronę końca, na przykład n -= 1.