Pętla while – powtarzaj, dopóki warunek jest prawdziwy
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Pętla for sprawdza się, gdy wiesz z góry, ile razy coś ma się powtórzyć. Ale czasem tego nie wiesz: pytasz użytkownika o liczbę, dopóki nie poda poprawnej, albo powtarzasz menu, dopóki nie wybierze wyjścia. Do tego służy while.
Po tej lekcji:
- wyjaśnisz, kiedy używa się
for, a kiedywhile, - napiszesz pętlę
whilez poprawną zmianą zmiennej w środku, - będziesz wiedzieć, co powoduje pętlę nieskończoną i jak zatrzymać program,
- użyjesz instrukcji
breakdo wyjścia z pętli.
Kiedy for nie wystarcza
for– wiesz z góry, ile razy ma się powtórzyć. Dziesięć liczb, dwadzieścia ocen, sto obrotów.while– powtarzasz, dopóki coś jest prawdą, i nie wiesz z góry, ile to potrwa.
# for: znam liczbę obrotów
for i in range(10):
print(i)
# while: powtarzam, dopóki warunek jest prawdziwy
licznik = 0
while licznik < 10:
print(licznik)
licznik += 1
Typowe zastosowania while: pytanie użytkownika do skutku, liczenie, ile razy trzeba podzielić liczbę przez dwa, żeby dojść do jedynki, powtarzanie menu programu.
Budowa pętli while – trzy rzeczy do zadbania
- Przed pętlą – utwórz zmienną i nadaj jej wartość początkową.
- W warunku – sprawdź tę zmienną. Dopóki warunek jest prawdziwy, pętla się kręci.
- W środku pętli – zmień tę zmienną, żeby warunek kiedyś przestał być prawdziwy.
licznik = 0
while licznik < 3:
print("Obrot", licznik)
licznik += 1
print("Koniec")
Pętla nieskończona
Pominięcie trzeciego punktu daje pętlę nieskończoną. Program się nie wywali – będzie działał w kółko, aż go ręcznie zatrzymasz.
- W konsoli zatrzymujesz program skrótem Ctrl + C.
- W PyCharm – czerwonym kwadratem zatrzymania.
- Tutaj, na stronie – przyciskiem Stop.
Jeśli program się zawiesił, najpierw sprawdź, czy zmieniasz zmienną w środku pętli.
break – wyjście z pętli w środku
Instrukcja break kończy pętlę od razu, niezależnie od warunku. Reszta bieżącego obrotu też się nie wykona. Działa w while i w for, a kończy tylko tę pętlę, w której stoi.
for i in range(100):
print(i)
if i == 4:
break
# wypisze 0 1 2 3 4
Wzorzec while True
Warunek True jest zawsze prawdziwy, więc taka pętla sama z siebie nigdy się nie skończy. Wyjściem jest wyłącznie break w środku.
licznik = 0
while True:
licznik += 1
if licznik == 3:
break
print(licznik) # 3
Wygląda dziwnie, ale to najważniejszy wzorzec tego przedmiotu. Za kilka lekcji zbudujesz na nim program pytający użytkownika do skutku.
Spróbuj sam
W kodzie z lekcji jest zakomentowana pętla nieskończona:
# while True:
# print("to sie nigdy nie skonczy...")
Usuń oba znaki #, uruchom program i zatrzymaj go przyciskiem Stop (strona po chwili przerwie go też sama). Tak wygląda pętla nieskończona – lepiej zobaczyć ją tutaj niż pierwszy raz na egzaminie.
Zadania z lekcji:
- Za pomocą pętli
whilewypisz liczby od 1 do 10. - Utwórz zmienną o wartości 100. Dopóki jest większa od 1, dziel ją przez 2 dzieleniem całkowitym i wypisuj wynik. Policz, ile razy udało się podzielić.
- Napisz pętlę
while True, która zlicza obroty i przerywa się instrukcjąbreakpo dziesiątym obrocie. - Napisz program, który wypisuje kolejne liczby i przerywa się w chwili, gdy suma wypisanych liczb przekroczy 50.
Sprawdź się
- Wyjaśnię, kiedy używa się
for, a kiedywhile. - Napiszę pętlę
whilez poprawną zmianą zmiennej w środku. - Wiem, co powoduje pętlę nieskończoną i jak zatrzymać program.
- Użyję instrukcji
breakdo wyjścia z pętli.
Na następnej lekcji: listy. Zamiast trzymać dwadzieścia ocen w dwudziestu zmiennych, będziesz je trzymać w jednej – i przechodzić po nich pętlą.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.