08 Python - Pętla While
08 Python - Pętla While
Instrukcja while
Czy zgadzasz się z poniższą instrukcją?
Zauważ, że zapis mówi też, że jeśli nie ma nic do zrobienia, nic się nie wydarzy.
Różnica semantyczna jest ważniejsza: gdy warunek jest spełniony, if wykonuje swoje
instrukcje tylko raz; while powtarza wykonanie aż warunek zostanie oceniony jako True.
while wyrażenie_warunkowe:
instrukcja_1
instrukcja_2
instrukcja_3
:
:
instrukcja_n
jeśli chcesz wykonać jeśli chcesz wykonać while, musisz (tak jak przy if) umieścić we
wcięciach wciąć wszystkie instrukcje w taki sam sposób;
instrukcja lub zestaw instrukcji wykonywanych wewnątrz pętli while nazywa się ciałem pętli
(ang. loop body);
jeśli warunek jest oceniony jako False (równy zeru) już w momencie pierwszego testu, ciało
pętli nie jest wykonywane ani razu (zauważ analogię braku konieczności wykonania
czynności, jeśli nie ma nic do zrobienia),
ciało pętli powinno być zdolne do zmiany wartości warunku, ponieważ jeśli na początku
warunek jest oceniony jako True, ciało pętli może być wykonywane nieprzerwanie do
nieskończoności – zauważ, że zrobienie czegoś zwykle zmniejsza liczbę rzeczy do zrobienia).
Nieskończona pętla
Nieskończona pętla jest ciągiem instrukcji w programie, który powtarza się w
nieskończoność (pętla bez końca).
Oto przykład pętli, która nie jest w stanie zakończyć swego biegu:
while True:
print("Utknąłem w pętli.")
Ta pętla będzie wyświetlać w nieskończoność na ekranie komunikat "Utknąłem w pętli.".
Aby zakończyć działanie programu, po prostu naciśnij Ctrl+C (lub Ctrl+Break na niektórych
komputerach).
Przykład 1
Przykład 2
# Program odczytuje sekwencję liczb i liczy ile z nich
# jest liczbami parzystymi a ile nieparzystymi.
# Program kończy pracę po wpisaniu zera.
parzyste = 0
nieparzyste = 0
# wczytaj pierwszą liczbę
liczba = int(input("Wpisz liczbę lub 0, aby zatrzymać: "))
# 0 kończy wykonywanie
while liczba != 0:
# sprawdź czy liczba jest nieparzysta
if liczba % 2 == 1:
# zwiększ licznik liczb
nieparzystych nieparzyste += 1
else:
# zwiększ licznik liczb parzystych
parzyste += 1
# wczytaj kolejną liczbę
liczba = int(input("Wpisz liczbę lub 0, aby zatrzymać: "))
# wyświetl wynik
print("Liczb nieparzystych:", nieparzyste)
print("Liczb parzystych:", parzyste)
Spróbuj przypomnieć sobie, jak język Python interpretuje prawdziwość warunku i zauważ, że
te dwie formy są równoważne:
counter = 5
while counter != 0:
print("W pętli.", counter)
counter -= 1
print("Poza pętlą.", counter)
Ten kod służy do wyświetlania ciągu znaków "W pętli." i wartości przechowywanej w
zmiennej counter podczas danej pętli dokładnie pięć razy. Gdy warunek nie zostanie
spełniony (wartość zmiennej counter osiągnie 0), pętla jest zakończona i komunikat "Poza
pętlą." razem z wartością przechowywaną w zmiennej counter zostaną wyświetlone.
Ale jest jedna rzeczy, którą można zapisać bardziej kompaktowo – warunek pętli while loop.
counter = 5
while counter:
print("W pętli.", counter)
counter -= 1
print("Poza pętlą.", counter)
ZAPAMIĘTAJ
Zadanie 1
Młodszy mag wybrał sekretny numer. Ukrył go w zmiennej o nazwie tajnyNumer. Chce,
żeby każdy, kto uruchomi jego program zagrał w jego grę o nazwie Zgadnij sekretny numer, i
odgadł, jaki numer został wybrany dla niego. Ci, którzy nie zgadną tego numeru, na zawsze
utkną w nieskończonej pętli! Niestety, sprytny mag nie wie, jak dokończyć swój kod...
Twoim zadaniem jest pomóc magowi napisać kod w edytorze w taki sposób, aby po
uruchomieniu:
DODATKOWE INFORMACJE
Przy okazji, spójrz na funkcję print(). Sposób, w jaki zastosowaliśmy ją w kodzie to tzw.
wyświetlanie wieloliniowe. Możesz użyć potrójnego cudzysłowu do wyświetlania ciągów
znaków w wielu liniach (aby tekst był łatwiejszy do odczytania) lub nawet stworzyć swój
własny tekstowy obrazek. Poksperymentuj z tym.
tajnyNumer = 777
print(
"""
+================================+
| Witaj w mojej grze, mugolu! |
| Wprowadź liczbę całkowitą |
| i zgadnij, jaki numer |
| wybrałem dla ciebie. |
| Jaki jest więc sekretny numer? |
+================================+
""")