Lekcja 7 składa się z trzech części A, B, C, które można wykonać w dowolnej kolejności.
Do tej pory uczyliśmy się podstawowych poleceń programowania (n.p. przypisywania wartości, drukowania) oraz sposobu sprawdzania, które instrukcje są wykonywane przy użyciu instrukcji if
. W tej lekcji wprowadzamy pętle (nazywane powtórzeniami lub iteracją): sposób na robienie przez komputer tego samego (lub podobnych rzeczy) w kółko. Na przykład, sprawdzanie pisowni każdego
słowa w dokumencie byłoby wykonywane za pomocą pętli. Opisujemy dwa rodzaje pętli Pythona w tej lekcji: pętle while
i pętle for
.
Pętle while
Instrukcja while
powtarza fragment kodu w kółko, tak długo, dopóki jakiś warunek jest prawdziwy. Oto przykład:
Pierwsza linia to while «warunek»:
, gdzie «warunek» jest wyrażeniem, które zwraca True
lub False
(wyrażenie typu boolowskiego, podobnie jak if
).
Oto ogólna struktura:
- Pierwsza linia to
while «warunek»:
, gdzie «warunek» jest wyrażeniem, które zwracaTrue
lubFalse
(wyrażenie typu boolowskiego, podobnie jakif
). - Następnie, wstawimy wcięty blok (znów, jak np. w instrukcja
if
) składający się z wyrażeń, które chcemy powtarzać w kółko. Nazywamy to ciałem. - Kiedy program jest uruchomiony, poniższe jest powtarzane:
- O Warunek jest testowany; jeśli warunek jest
True
, wtedy ciało jest wykonywane, potem powtarzamy wszystko od góry; gdy warunek zostanie oszacowany jakoFalse
, pętla zostanie zatrzymana.
- O Warunek jest testowany; jeśli warunek jest
W powyższym przykładzie powtarzamy ciało pętli, aż timeLeft
nie będzie większa niż 0.
Z użyciem pętlami łatwo jest napisać program, który działa w nieskończonej pętli. Otrzymasz błąd "Time Limit Exceeded" (Przekroczono limit czasu), ponieważ nasz serwer internetowy CS Circles wymusza limit czasu; po upływie 1 sekundy program zostaje zakończony. Jeśli uruchomiłbyś program w domu, to cały czas by działał (dopóki nie zmusiłbyś go do zakończenia, zazwyczaj, poprzez naciśnięcie klawiszy Ctrl-C). |
Pętle for
W Pythonie jest też inny rodzaj pętli zwanej pętlą for
. W wielu sytuacjach może być użyty którykolwiek rodzaj pętli (for
/while
), a jeden jest prostszy od drugiego, więc dobrze jest wiedzieć, jak używać obu. Pętla for
jest tak zbudowana, że łatwo poruszać się w określonym zakresie liczb (lub jak zobaczymy w późniejszej lekcji, po dowolnej liście danych).
Poniżej przykład pętli for
.
Ogólna struktura numerycznej pętli for
dla «variableName» w zakresie («startValue», «tailValue»): «wciety blok poleceń, nazywamy"ciałem" pętli»Jak zwykle, blok ciała może składać się z wielu linii, a wszystkie te linie mają mieć wcięcie tej samej wielkości. Najpierw ciało pętli jest wykonywane ze zmienną
variableName
ustawioną na wartość startValue
. Następnie powtarzane jest ze zmienną variableName
ustawioną na wartość startValue+1
, a następnie z wartością startValue+2
itd. To trwa aż variableName
przyjmie wartość tailValue-1
i wtedy pętla zostanie zatrzymana.
Pętla kończy się dla zmiennej tailValue-1 , a nie tailValue !
|
Oto przykład pętli for
wewnątrz innej pętli for
.
Instrukcje break
i continue
Instrukcja break
jest jak wyjście awaryjne z pętli while
lub for
: break
powoduje natychmiastowy skok do poleceń, które znajdują się po części z ciałem pętli. Oto przykład przy użycia break
: odczytuje wszystkie linie wejściowe, dopóki nie odczyta "END"
.
Polecenie continue
pozwala pominąć resztę pętli, a następnie, powtórzyć instrukcje ciała w kolejnej rundzie (zazwyczaj nazywamy to następną "iteracją").
Oto zwizualizowany przykład, który łączy break
and continue
. Czy możesz przewidzieć, co wyjdzie?