Cykle magiczne! Cykle for
Wreszcie prawdziwa automatyzacja: zamiast powtarzać kod ręcznie, prosimy Python, by powtórzył go sam.
Zanim Python: powtarzalność wokół nas
Powtarzamy czynności cały czas, nawet nie myśląc: mycie zębów tymi samymi ruchami, Maszerujemy tymi samymi krokami, śpiewamy zwrotkę za zwrotką tej samej melodii. Powtarzalność jest odrębnym, niezależnym sposobem organizowania działaniana równi z "zrób jedną rzecz po drugiej" oraz "wybierz jedną z dwóch ścieżek".
Trzy struktury algorytmu: przypominamy sobie
W rozdziale 9 omówiliśmy pierwsze dwie z trzech podstawowych struktur, z których składa się każdy algorytm. Trzecia — powtarzalność jest tematem tego rozdziału.
if / elif / elsefor / whileCo jest nie tak z tym kodem?
Oto kwadrat z rozdziału 6 — już znany kod: cztery identyczne bloki „krok do przodu, obrót”
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
Teraz wyobraź sobie, że nie potrzebujesz kwadratu, ale Dwudziestu. Skopiuj te dwie linie jeszcze 16 razy ręcznie — długo i łatwo popełnić błąd. Właśnie do takich powtarzających się bloków istnieją pętle: Sposób na powiedzenie Python „Powtarzaj to N raz”
Terminy pętli
Zanim napiszemy pierwszy cykl, ustalmy słowa, jakimi go opiszemy — Potem spotkają się w całym rozdziale:
| Termin | Co to jest |
|---|---|
| pętla | konstrukcja, która powtarza ten sam blok kodu wielokrotnie |
| Korpus Cyklu | tym samym bloku kodu, który jest powtarzany (linie wcięte pod for/while) |
| iteracja | jednym przejściem przez treść cyklu, jednym "raz" z "powtórz N razy" |
| warunek | to, co pętla sprawdza, by zdecydować, czy kontynuować, czy zakończyć |
| licznik | zmienna, która liczy numer iteracji lub zmienia się z każdym krokiem |
Pętle for
Najczęstszym typem cyklu w Python jest for. Razem z
range() może powtórzyć blok kodu określoną liczbę razy:
for i in range(5):
print(i)
Rozkładamy na słowa
| Część kodu | Co oznacza |
|---|---|
for | „rozpoczęcie cyklu” |
i | zmienna pętli — na każdym kroku pobiera kolejną wartość z range(5) |
in range(5) | Źródło wartości: Liczby od 0 do 4 |
: | wtedy zaczyna się treść cyklu (z wcięciem) |
print(i) | ciało pętli — to, co powtarza się przy każdej iteracji |
Kanoniczny flowchart cyklu for
Ważne jest, aby od razu przyzwyczaić się do właściwego obrazu tego, co się dzieje: for
nie "magicznie wykonuje ciała N czasie" – na każdym etapie pyta "czy jest następny
element?", a jeśli tak, wykonuje ciało i ponownie pyta:
Trasa Egzekucji
Tabela śledzenia to sposób śledzenia tego, co dzieje się w każdej iteracji, linia po linii. My Będziemy korzystać z tej tabeli przez cały rozdział:
| Iteracja | i | Zakończenie (print) |
|---|---|---|
| 1 | 0 | 0 |
| 2 | 1 | 1 |
| 3 | 2 | 2 |
| 4 | 3 | 3 |
| 5 | 4 | 4 |
range(5) — od 0 do 4. range(2, 8) — od 2 do 7. range(0, 10, 2) — od 0 do 8 z krokiem 2: 0, 2, 4, 6, 8. Szczegółowa analiza znajduje się na następnej stronie.Gdy cykl zmienna nie jest potrzebny
Jeśli samo liczba powtórzeń jest ważna, a nie wartość licznika — tradycyjnie nazywa się ją
_ (podkreślenie), sygnalizując „ta wartość
świadomie nie jest używana”:
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
artist.forward(100)
artist.right(90)
for _ in range(4):
artist.forward(100)
artist.right(90)
for. Nie jest „nowoczesny”_ to nazwa zmiennej powszechnej Python nie obsługuje jej w żaden specjalny sposób. To po prostu umowa między programistami: „celowo nie używamy tutaj wartości pętli.” for x in range(4): też zadziała, ale czytelnik kodu będzie miał mniej jasny sygnał.