W tym artykule o Pythonie przedstawię Ci kolejną ważną konstrukcję, bez której duża część przykładów byłaby niemożliwa do wykonania 😲. Mianowicie, pętla "while" 🎉! Pętla "while" w języku Python wymaga zmiany aktualnego sposobu myślenia i zrozumienia procesu wykonywania instrukcji do spełnienia określonego warunku 💥. Natomiast po więcej szczegółów zaproszę Cię do środka materiału 😊!
OTO CO NAM DAJE PĘTLA "WHILE" W JĘZYKU PYTHON!
Wyjaśnimy sobie trochę teorii, a potem przejdziemy do praktyki 👍.
CZYM JEST PĘTLA "WHILE" W JĘZYKU PYTHON?
Pętla "while" w Pythonie (ang. "while" loop) to konstrukcja dla bloku kodu, który ma się wykonywać tak długo, dopóki dany warunek nie zostanie spełniony 🔁. Porównując to do instrukcji warunkowej, która jest badana tylko jeden raz, w pętli odbywa się to wiele razy 🙂.
Przykładowo, jesteś gdzieś na mieście i szukasz przystanku autobusowego 🚍. Niestety nie znasz okolicy i musisz błądzić do momentu, aż w końcu go znajdziesz. Nie wiesz kiedy do tego dojdzie 💥. Możesz go dostrzec już od razu, możesz po 5 minutach, a może upłynąć cały dzień na poszukiwania 😳.
To jest przykład "działania w pętli" 🔁! Dopóki nie znajdziesz przystanku, dopóty będziesz go szukać 💡. Natomiast nie wiadomo kiedy to nastąpi 🔥! Właśnie w taki sposób działa pętla "while" 🎯!
Możemy przejść do ukazania jej budowy 🔨!
JAK UTWORZYĆ PĘTLĘ "WHILE" W JĘZYKU PYTHON?
W Pythonie, pętla "while" tworzona jest w następujący sposób 👇:
while [warunek]:
[instrukcje]Postąpię tak samo, jak przy tłumaczeniu instrukcji warunkowej ℹ️. Najpierw wyjaśnię samą konstrukcję, a potem konkretny przykład 😄.
Postać pętli "while" ("dopóki") składa się z poniższych elementów 👇:
- słowo kluczowe "while",
- wartość logiczna, zmienna lub warunek utworzony z operatorów relacyjnych,
- znak dwukropka (obowiązkowa rzecz, bez której będzie błąd składniowy 🚫),
- instrukcje po zrobieniu obowiązkowego wcięcia (poprzez spację lub tabulator), które mają się wykonać po spełnieniu warunku (gdy wynik badania warunku będzie w postaci wartości "True" ℹ️).
Opiszę krótko każdy z punktów ⏩!
Na początku stawiasz słowo kluczowe "while". Następnie, piszesz wartość logiczną, zmienną bądź warunek, czyli coś, od czego będzie zależeć dalsze wykonywanie tych samych instrukcji. Tutaj trzeba bardzo uważać na formułowanie warunku, gdyż pamiętaj, że to będzie się wykonywać przez cały czas ⚠️! Innymi słowy, trzeba zadbać o to, aby warunek w którymś momencie przestał obowiązywać 🔓!
Po wstawieniu warunku, koniecznie dopisujesz na końcu znak dwukropka jako obowiązkowa część składni (bez tego, Python zaprotestuje przy uruchomieniu programu ❌) 🔥! Potem przechodzisz do nowego wiersza i po wykonaniu obowiązkowego wcięcia (w postaci spacji lub tabulatora), wprowadzasz instrukcje jakie mają się wykonywać w pętli przez cały czas, do momentu, aż warunek będzie niespełniony ✔️. Wcięcie jest istotne, ponieważ ono określa które instrukcje mają "należeć" do pętli, a które nie i to decyduje o tym, co ma być powtarzane (wewnątrz pętli), a co nie (poza pętlą) ⚠️.
Zobacz, że porównując to do instrukcji warunkowej, jedyną różnicą w zapisie jest słowo kluczowe 😊!
Jak już wyjaśniliśmy sobie postać pętli "while", to teraz przejdźmy do przykładu użycia ⏩!
PRZYKŁAD UŻYCIA PĘTLI "WHILE" W JĘZYKU PYTHON
Aby zobrazować sytuację, w której nie wiadomo ile razy dojdzie do przerwania ciągłości pętli, skorzystam z modułu "random" i metody do pseudolosowego wyznaczania liczby z przedziału od 1 do 100 🙂. Ustalimy sobie, że instrukcje przestaną się wykonywać, gdy wylosowana liczba będzie równa 20. W ten sposób pokażę, że liczba powtórzeń za każdym razem będzie inna ❤️.
Tak możemy podejść do naszego założenia z użyciem pętli "while" w języku Python 👇:
import random
number_of_loops = 0
while random.randint(1, 100) != 20:
number_of_loops += 1
print('Liczba powtórzeń pętli: ' + str(number_of_loops))Na początku importujemy sobie moduł "random" używając instrukcji importu. Następnie tworzymy zmienną do rejestrowania liczby powtórzeń pętli, aby mieć podgląd 😉. Tuż po niej widzimy pętlę "while". Jej warunkiem jest sprawdzenie czy liczba uzyskana przez metodę "randint" jest równa 20 🔥. Nie jesteśmy w stanie określić za którym razem to nastąpi i to jest najważniejszy punkt 🎯!
Od tego miejsca, mogą zajść dwie możliwości 👇:
- jeżeli wylosowana liczba jest równa 20, to instrukcje znajdujące się w pętli "while" nie zostają wykonane i Python przechodzi dalej,
- jeżeli wylosowana liczba nie jest równa 20, to instrukcje znajdujące się w pętli "while" zostają wykonane, a po ich zakończeniu Python "wraca" do wiersza ze słowem kluczowym "while" i sprawdza warunek powtórnie (czyli tak, jakbyśmy czytali ten sam punkt od początku 😊).
W taki sposób to działa 🧠! Gdy uruchomisz ten program, to zobaczysz tekst z liczbą powtórzeń pętli, a ona za każdym razem będzie inna 😱! Ponieważ zmienna jest typu liczby całkowitej (bez ułamka), należy ją skonwertować na łańcuch znaków ℹ️.
![]() |
Pętla "while" w języku Python jest konstrukcją pozwalającą na wykonanie określonych instrukcji, dopóki dany warunek przestaje być spełniony.
Chcę w tym miejscu zaznaczyć ważną rzecz 😳! Pętla "while" w języku Python jak najbardziej może być zastosowana do przypadków, w których wiemy dokładnie ile razy coś będzie musiało się wykonać ✅. Jedyna subtelna różnica jest taka, że nie będzie ona najlepszym "rodzajem" pętli na takie sytuacje.
KIEDY NAJLEPIEJ UŻYĆ PĘTLI "WHILE" W JĘZYKU PYTHON?
W Pythonie, pętli "while" najlepiej użyć w sytuacji, gdy nie wiemy ile razy musi się coś wykonać, aby coś zostało uznane za ukończone ℹ️. Wynika to z jej budowy. Pętla "while" posiada "gniazdo" na warunek, a on może przyjąć dowolną formę 🙂. Może to być sprawdzanie czy jakaś liczba jest mniejsza od innej i zwiększanie jej o 1 do góry co każde powtórzenie pętli (tzw. "iterację"), natomiast w takich sytuacjach raczej stosujemy pętlę "for", gdyż ona jest ukierunkowana na wykonywanie instrukcji określoną liczbę razy.
To ma związek z sekwencjami, które w Pythonie oznaczają strukturę danych zawierającą wiele elementów, po których możemy "przechodzić" jeden po drugim 💡. Zakres liczbowy od A do B (typ "range"), lista, krotka czy zbiór - to są przykłady sekwencji, po których możemy iterować, element po elemencie ✅. Wtedy to pętla "for" będzie tu dużo bardziej pasować 👍.
Gdy używamy pętli "while", w której rolę odgrywa licznik, musimy sami zadbać o zmianę wartości, od której zależy dalszy przebieg programu. W przeciwnym razie, czeka nas wejście w nieskończoną pętlę, z której program już nigdy sam się wydostanie (to zagadnienie wyjaśniam w dalszej części artykułu 👇).
CO WARTO WIEDZIEĆ NA TEMAT PĘTLI "WHILE" W JĘZYKU PYTHON?
Oto 2 punkty, które trzeba wziąć pod uwagę, gdy korzystasz w Pythonie z pętli "while" 👇:
- pętla musi w którymś momencie zostać przerwana,
- warunek w pętli nie musi być typu logicznego, aby przyjął wynik w postaci wartości "True".
Wyjaśniam szczegóły 🧠!
CO SIĘ STANIE, GDY WARUNEK W PĘTLI "WHILE" ZAWSZE BĘDZIE SPEŁNIONY?
Jeżeli korzystasz z pętli "while" w Pythonie bądź jakimkolwiek innym języku i warunek jaki umieszczasz zawsze będzie spełniony przez cały czas działania programu, to Twój program wejdzie w pułapkę, z której nigdy nie wyjdzie 😱!
Pętla nieskończona odnosi się do sytuacji, w której dochodzi do zawieszenia się programu z powodu braku przypadku przerwania pętli ❌. Prosty przykład wywołania takiej pętli jest następujący 👇:
i = 0
while i < 10:
print(i)Zmienna posiada początkową wartość 0 (zero). Warunkiem zakończenia pętli "while" jest moment, w którym wartość tej zmiennej będzie co najmniej równa 10. W bloku kodu z instrukcjami wykonującymi się w pętli nie ma śladu modyfikacji tej wartości (jest jedynie wypisywanie wartości funkcją "print"), a to oznacza, że nie ma żadnej szansy na wyjście z tej pętli, gdyż warunek już zawsze będzie spełniony 😐.
Wtedy jedynym wyjściem z tej sytuacji jest awaryjne zamknięcie programu jednym z 2 sposobów 👇:
- kombinacją "Ctrl + C",
- zamknięciem procesu przez Menedżer zadań (jeśli operujesz na systemie Windows ℹ️).
Druga rzecz jaką warto wiedzieć, to to, jakie wartości pętla "while" przyjmuje w miejsce warunku, aby uznać je za spełnione.
JAKIE WARTOŚCI PRZYJMUJE WARUNEK PĘTLI "WHILE" W JĘZYKU PYTHON?
W przeciwieństwie do większości innych języków, w których jedynym akceptowanym typem danych jest "bool", tutaj warunek nie jest ograniczony wyłącznie do zmiennych typu logicznego i wyrażeń relacyjnych powstałych z operatorów relacyjnych (choć tylko takie powinny być stosowane 🙂).
Prawda jest taka, że w miejsce warunku może zostać wstawiona wartość dowolnego typu i wtedy taki warunek zostanie uznany za spełniony, gdy wartość nie jest "pusta" 😮! Możesz na przykład wstawić liczbę 👇:
while 500.0:
print('Warunek spełniony')i to uruchomi się bez problemu 😱! W tym przypadku wynikiem będzie wartość "True" ✔️. Czyli pętla będzie nieskończona 😁. Liczba, aby nie została uznana za "pustą" wartość, wystarczy że jest różna od zera 👀!
Więcej informacji na temat transformacji na logiczny typ danych przeczytasz w tym artykule ℹ️.
Piszę to tylko w ramach ciekawostki i nie radzę korzystać z takich zapisów, gdyż nie są zgodne z zasadami składni w ogólnie przyjętym programowaniu 🚫.
To by było na tyle 😊!
