Python • kurs podstawowy • lekcja 11
Pętla while
Potrzebujesz odliczania.
Twój cel: Prześledzisz stan pętli while i zapewnisz osiągalny warunek zakończenia.Warunki i aktualizowanie zmiennej.
Co ma zrobić program?
while sprawdza warunek przed każdym wykonaniem bloku, także przed pierwszym. Jeśli warunek jest fałszywy od początku, blok nie wykona się ani razu. Iteracja to jedno wykonanie ciała pętli.
Licznik opisuje bieżący stan. Inicjalizujemy go przed pętlą, odczytujemy w warunku, a wewnątrz zmieniamy tak, by warunek mógł przestać być prawdziwy. Umieszczenie aktualizacji poza pętlą nie pomoże: program nie dojdzie do niej, jeśli pętla się nie kończy.
W pętli zależnej od input() nie znamy zwykle liczby prób. Musimy jednak pobierać nową odpowiedź wewnątrz bloku. Sama możliwość zakończenia nie gwarantuje, że użytkownik poda pasującą odpowiedź. Przypadkowo nieskończony program przerwiesz w terminalu przez Ctrl+C.
Przewidź przed uruchomieniem
counter = 1
total = 0
while counter <= 3:
total = total + counter
counter = counter + 1
print(total)
print(counter)
Porównaj wynik i prześledź mechanizm
total = 6, counter = 4; blok wykona się trzy razy. Dodaje kolejno 1, 2 i 3. Po zwiększeniu licznika do 4 warunek jest sprawdzany ponownie i daje False.
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
6
4
| Przed testem | Suma przed | Akcja | Suma po |
|---|---|---|---|
| counter = 1 | 0 | Dodaj 1 | 1 |
| counter = 2 | 1 | Dodaj 2 | 3 |
| counter = 3 | 3 | Dodaj 3 | 6 |
| counter = 4 | 6 | Wyjdź | 6 |
Zmień działający program
Zmień warunek na counter < 3 i przed uruchomieniem przewidź zmianę sumy.
Pierwsza wskazówka
Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.
Porównaj swoją modyfikację
counter = 1
total = 0
while counter < 3:
total = total + counter
counter = counter + 1
print(total)
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
3
Znajdź przyczynę problemu
Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.
Zamierzone działanie: Wyświetl 1, 2, 3 i zakończ pętlę.
counter = 1
while counter <= 3:
print(counter)
counter = counter + 1
Trop do diagnozy
Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.
Zastosuj w nowej sytuacji
Wskazówka do rozpoczęcia
Sprawdź trzy miejsca: stan początkowy, warunek i zmianę stanu. Zakończenie musi być osiągalne.
Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:
counter = 3
Rozwiązanie do samodzielnej kontroli
counter = 3
while counter > 0:
print(counter)
counter = counter - 1
print("Start")
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
3
2
1
Start
Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.
Co zabierasz do kolejnego programu?
Sprawdź trzy miejsca: stan początkowy, warunek i zmianę stanu. Zakończenie musi być osiągalne.
Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.