Rozdział 10 · Trochę automatyzacji!
Mini-projekt – spirale łuków
Kończymy rozdział wzorcem, który zmienia się na każdym etapie cyklu, i podsumowujemy wyniki.
Mini-Projekt Ostatniego Rozdziału: Spirala Łuku – każdy wątek jest mniejszy poprzednie.
spirali_iz_dug.py
radius = 5
for _ in range(60):
artist.circle(radius, 90) # Łuk ćwierćkoła
radius += 3 # Za każdym razem trochę więcej
spirali_iz_dug.py
import turtle
screen = turtle.Screen()
screen.setup(width=420, height=420)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(2)
radius = 5
for _ in range(60):
artist.circle(radius, 90)
radius += 3
screen.exitonclick()
Rezultat
Zmiana zmiennej w pętli — normalna sprawa
W przeciwieństwie do poprzednich przykładów, tutaj
radius się zmienia każdym kroku cyklu powoduje to efekt rosnącej spirali, a nie powtarzającego się wzoru.break w Turtle jest zatrzymanie się przed końcem
break świetnie działa w pętlach wewnętrznych, które rysują grafikę
— na przykład, aby pozostać na ekranie:
break_v_turtle.py
dlina = 10
for _ in range(50):
if artist.xcor() > 150:
break
artist.forward(dlina)
artist.left(90)
dlina += 6
break_v_turtle.py
import turtle
screen = turtle.Screen()
screen.setup(width=420, height=420)
artist = turtle.Turtle()
artist.speed(0)
artist.pencolor("#5B24F9")
artist.pensize(3)
dlina = 10
for _ in range(50):
if artist.xcor() > 150:
break
artist.forward(dlina)
artist.left(90)
dlina += 6
screen.exitonclick()
Rezultat
50 zaplanowano, ale wykonało się mniej
Pętla była gotowa do wykonania 50 razy, ale faktycznie ukończona wcześniej, gdy tylko spełniono warunki
artist.xcor() > 150 się sprawdziło. Dlatego ostatni segment na zdjęciu jest krótszy niż powinien był być pełny obrót — break przerywa rysunek dokładnie w środku kroku.★★ Zadanie samodzielne
Spirala z kwadratów
Zastąp łuk małym kwadratem (pętlą czterostronną) wewnątrz zewnętrznej pętli, aby stworzyć spiralę z zmniejszającymi się lub rosnącymi kwadratami.
Praktyka: Spirale łuków
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Praktyka: break w Turtle jest kwadratową spiralą
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Podsumowanie rozdziału
Narzędzia pętli — na przyszłość
Rozdział 10 Podsumowanie Ściągawka
Liczba powtórzeń jest znana z góry
→
for ... in range(n)
Brutalna siła gotowej sekwencji (łańcuch znaków, lista)
→
for element in sekwencję
Potrzebujesz zarówno indeksu, jak i wartości
→
for i, znaczenie in enumerate(...)
Liczba powtórzeń nie jest znana z góry
→
while stan
Warunek zatrzymania wygodniej sprawdzić w środku ciała
→
while True + break
Musimy się dowiedzieć, czy był jakiś break
→
for/while … else
Musisz pominąć jeden krok, nie wychodząc z pętli
→
continue
Czego nauczyliśmy się w tym rozdziale
- Powtarzanie to trzecia struktura algorytmu po sekwencji i rozgałęzieniu (Rozdział 9).
for ... in range(n)powtarza blok kodu określoną liczbę razy — pętla pyta "Czy jest następny przedmiot?", zamiast N wykonać ciało "magicznie".range()nie lista, lecz generator liczb; jego stop się nie włącza — ta sama logika co w liniach z rozdziału 8.enumerate()daje jednocześnie zarówno indeks, jak i wartość; licznik i akumulator to dwa podstawowe wzorce stanów w pętli.whilepowtarza akcję, dopóki warunek pozostaje prawdziwy — używane, gdy liczba powtórzeń jest nieznana.breakprzerywa pętlę całkowicie;continuepomija bieżący krok; opcjonalneelsepętla działa tylko bez break.- Cykle można zagnieżdżać w sobie — wtedy wewnętrzny cykl wykonuje się całkowicie przy każdym kroku zewnętrznego, a łączna liczba iteracji mnoży się.
- Większość błędów pętli mieści się w kilkunastu typowych scenariuszach — tabela śledzenia stworzona ręcznie pomaga znaleźć każdy z nich.
- Wszystkie ręcznie rysowane kształty z rozdziałów 6-7 można teraz zapisać w 2-4 linijkach w cyklu, a my widzieliśmy ich prawdziwe, naprawdę ukończone rezultaty.
co dalej
Widzieliśmy już pętle działające z listami liczb — [4, 8, 15,
16, 23, 42]. W następnym rozdziale szczegółowo przeanalizujemy, jak same zbiory danych są zorganizowane
Listy, krotki, zbiory i słowniki to właśnie dla cykli istnieją
w prawdziwych programach.