Przeczytaj
Budowa pętli while
Przyjrzyjmy się pętli while
i jej składni w języku Python.
Wyrażenie TEST
jest wyrażeniem logicznym (jego wartość to prawda lub fałsz) i może być zapisane z wykorzystaniem operatorów logicznych, relacji lub porównania:
Instrukcje wewnętrzne pętli są wykonywane, dopóki wartość wyrażenia TEST
to PRAWDA
(wartość logiczna True
).
Pamiętaj, aby tak skonstruować wyrażenie TEST
oraz instrukcje wewnętrzne pętli, by pętla mogła się zakończyć. Pętlę, która nigdy nie zostanie zakończona, nazywamy pętlą nieskończoną:
Powyższa pętla będzie w nieskończoność wypisywać na standardowym wyjściu słowo Witaj!
Przygotujmy kod, który pozwoli stworzyć ciąg znaków. Do początkowo pustego ciągu będziemy dodawać znaki podane przez użytkownika tak długo, aż użytkownik wprowadzi znak „!” (wykrzyknik). Na końcu napis zostanie wypisany na ekranie.
Program zakończy swoje działanie, gdy użytkownik wprowadzi wyłącznie znak „!”, poniższe wprowadzone przykładowe łańcuchy tekstowe nie zatrzymają jego działania:
!!!
a!
Zapiszmy program, który wyświetli łańcuch znaków Python!
Uwaga, wykrzyknik jest ostatnim znakiem wynikowego tekstu.
Żeby program zakończył swoje działanie, użytkownik musi wprowadzić znak „!”.
W niektórych przypadkach język Python pozwala na pominięcie zapisu testu logicznego.
W tym wypadku pętla będzie się wykonywać do czasu, dopóki zmienna, której wartość badamy w warunku pętli, jest różna od None
, False
, bądź 0
. Musimy pamiętać o modyfikacji zmiennej lub przerwaniu pętli poleceniem break
.
Pętla while
, która będzie wykonywać się, dopóki zmienna całkowitoliczbowa zmienna
jest większa od 0.
Są przypadki, w których zaprezentowana pętla będzie nieskończona. Stanie się tak, kiedy początkowa wartość zmiennej zmienna
będzie liczbą ujemną.
Pętla while
, która będzie wykonywać się, dopóki zmienna logiczna jest różna od False
.
Pętla while
, która będzie wykonywać się, dopóki zmienna ma ustawioną wartość (jest różna od None
).
Nieskończona pętla while
, która zostanie przerwana instrukcją break
.
Pętle while
i operacje na listach
Przygotujmy kod, dzięki któremu uzyskamy listę wartości całkowitych (np. ocen), które później możemy przetworzyć (np. obliczyć średnią arytmetyczną). Załóżmy, że gdy zostanie wprowadzona ocena 0, nasz program powinien zakończyć działanie.
Zmienną ocena
należy zainicjować wartością różną od 0, aby warunek pętli while
miał wartość True
i instrukcje wewnętrzne pętli mogły zostać wykonane. Zainicjowanie zmiennej ocena
wartością 0 spowoduje pominięcie pętli while
i wypisanie pustej listy lista_ocen
.
Przykładowe działanie programu:
Możemy zauważyć, że ostatnia wprowadzana wartość 0 dodawana jest do elementów listy. Chcielibyśmy, aby liczba kończąca (0) nie była elementem naszej listy oraz aby możliwe było dodanie tylko wartości większych od zera. Wprowadzimy modyfikację, dzięki której do listy dodamy tylko wartości większe niż 0.
Przykładowe działanie programu po zmianach:
Pętla while
może posłużyć do „pobierania” kolejnych elementów z listy. Zdefiniujmy obiekt lista_t
, zawierający elementy, które są po kolei usuwane z wykorzystaniem funkcji del()del()
. Instrukcje w pętli są wykonywane, dopóki obiekt lista_t
zawiera jakiekolwiek elementy. Przetestuj działanie programu:
Napisz program, który w pętli będzie wykonywał następujące instrukcje tak długo, jak długo użytkownik na pytanie o chęć wykonania będzie odpowiadał „T”:
zada pytanie o to, jaki łańcuch znaków ma wyświetlić,
zada pytanie o to, ile razy go wyświetlić,
wyświetli określoną liczbę razy łańcuch znaków.
Specyfikacja problemu:
Dane:
odpowiedz
– pobrana od użytkownika decyzja o kontynuowaniu działania programu; łańcuch znakówn
– liczba naturalna; liczba wyświetleń danego znakuznak
– łańcuch znaków; znak do wyświetlenia
Wynik:
Program wyświetla n
-krotnie na standardowym wyjściu pobrany łańcuch znaków.
Przykładowe działanie programu:
W wersji 3.8 języka Python wprowadzono zmiany, m.in. możliwości przypisywania wartości zmiennym wewnątrz wyrażeń (opisane są one dokładnie w dokumencie PEP 572) oto przykład takiego zapisu:
Zapoznaj się z filmem przedstawiającym grę w zgadywanie, czy ustawioną wartością jest orzeł czy reszka. Czy potrafisz wskazać inne gry, w którym można wykorzystać pętle warunkowe?
Instrukcja else
w pętli while
Opcjonalnym elementem pętli while
jest blok else
. Wykonywany jest zawsze, jeśli warunek nie jest spełniony lub przestanie być spełniony.
Słownik
funkcja kasująca nieodwracalnie obiekt, usuwająca go z pamięci operacyjnej