Rozdział 12 · Wiele fascynujących mini-projektów!

Projekt: wyścig Turtle z użyciem pętli

Kilka żółwi na jednym ekranie jednocześnie — i podsumowujące wyniki całego laboratorium projektowego.

Zastosowanie
Turtlelistwhilerandom
Poziom
★★★★ challenge
Rezultat
Turtle graficznych

Co tworzymy

Pamiętaj z rozdziału 6, że ekran i żółw to różne obiekty, a żółwie mogą być kilka? Czas go użyć: rasa kilku żółwi z losowym krok.

gonka_turtle.py
import turtle
import random

random.seed(2)
screen = turtle.Screen()
screen.setup(500, 400)

cveta = ["red", "blue", "green", "orange"]
uchastniki = []

for i, cvet in enumerate(cveta):
    t = turtle.Turtle()
    t.shape("turtle")
    t.color(cvet)
    t.penup()
    t.goto(-200, i * 40 - 60)
    uchastniki.append(t)

finish_line = 200
pobeditel = None

while pobeditel is None:
    for t in uchastniki:
        t.forward(random.randint(1, 10))
        if t.xcor() >= finish_line:
            pobeditel = t.pencolor()
            break

screen.exitonclick()
Rezultat
Na końcu wyścigu Turtle cztery kolorowe żółwie na różnych pozycjach
Cztery Żółwie na końcu wyścigu (seed zarejestrowane do dokumentacji)
gonka_turtle.py
import random

screen = turtle.Screen()
screen.setup(500, 400)

cveta = ["red", "blue", "green", "orange"]
uchastniki = []

for i, cvet in enumerate(cveta):
    t = turtle.Turtle()
    t.shape("turtle")
    t.color(cvet)
    t.penup()
    t.goto(-200, i * 40 - 60)
    uchastniki.append(t)

finish_line = 200
pobeditel = None

while pobeditel is None:
    for t in uchastniki:
        t.forward(random.randint(1, 10))
        if t.xcor() >= finish_line:
            pobeditel = t.pencolor()
            break

print(f"Żółw kolorowy wygrał {pobeditel}!")
Lista żółwi — ten sam lista z rozdziału 11
uchastniki jest zwykłym lista Python (Rozdział 11), który po prostu przechowuje obiekty zamiast liczb turtle.Turtle(). Pętla for t in uchastniki iteruje przez to w taki sam sposób, jak przechodziłby przez lista liczby czy łańcuch znaków.
Challenge
Taśma wykończeniowa

Rysuj pionową linię na mecie (x=200) przed startem wyścigu, używając osobnego „sędziego”

Praktyka: wyścig Turtle
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →

Podsumowanie rozdziału

Co teraz umiemy budować

Co teraz umiemy budować
Programy tekstowe
Analizator tekstu i częstotliwość słów
Quiz
Konsola Komend
Notes
Zgadnij liczbę, wersja 3
Programy z danymi
Książka ocen
Koszyk sklepowy
Weryfikacja hasła
Grafika
Studio wielokątów
Grafika pikselowa w siatce
Spirale i złożona mandala
Choinka
Race Turtle
16 projektów, wszystkie działające na tych samych narzędziach w rozdziałach 1-11
Wszystko to jest napędzane tymi samymi narzędziami, co rozdziały 1-11
Strings
input(), split(), .lower()
formatowanie za pomocą f-stringów
Liczby
arytmetyka, zaokrąglanie
random
Warunki i Regulamin
if / elif / else
Flagi Boole'a
Pętle
for, while, break
liczniki, magazyny
Kolekcje
list, dict, set
lista słowniki
Turtle
formuły toczenia
zagnieżdżonych pętli → grafów

Jak daleko zaszliśmy

Rozdział 1Rozdział 12
print("Hello")interaktywna gra, analizator tekstu, quiz, notatnik, dane strukturalne, generator graficzny

Lista kontrolna gotowości projektu

Pełna lista kontrolna znajduje się w §12.2 „Budowanie projektu krok po kroku”

Co dalej: Dlaczego funkcje są potrzebne

Przyjrzyj się bliżej projektom w tym rozdziale: Normalizacja wejścia (.strip().lower()) powtarza się w analizatorze tekstu, w konsole zespołu i w quizie. Napęd, który trzeba uruchomić przed cyklem, jest taki sam błąd był korygowany trzy razy w różnych Debug Lab. Wzór na kąt obrotu pojawia się Turtle w Choinka, w mandali i w pracowni wielokątów.

Wkrótce to ułatwimy
Jeśli potrzebujesz tego samego bloku kodu w więcej niż jednym miejscu, musisz go skopiować. W następnym rozdziale, «Automatyzacja za pomocą funkcji» nauczymy się, jak nazywać grupę poleceń i używać jej wielokrotnie, bez konieczności ponownego kopiowania kodu. Nic z rzeczy z rozdziałów 1-12 nie będzie przestarzałe — funkcje dadzą nam jedynie ładniejszy sposób na organizację tego, co już potrafimy napisać.

Co skonsolidowaliśmy w tym rozdziale

  • Rozkład to rozbicie dużego zadania na małe, zrozumiałe kroki.
  • Rozwój stopniowy — w małych krokach każdy jest sprawdzany jednocześnie, a nie 80 linijek naraz.
  • Dane oddzielne od algorytmu — quiz i studio polygon pokazały, że ta sama logika działa dla wszystkich danych wejściowych.
  • Refaktoryzacja — ulepszenie struktury programu bez zmiany jego działania.
  • Warunki, pętle, łańcuch znaków, liczby, random, listy/zbiory/słowniki i Turtle — pracowały razem po raz pierwszy, w jednym programie, a nie osobno.
  • Systemowy workflow debugowania: oczekiwanie vs rzeczywistość → pierwsza rozbieżność → przyczyna → poprawka.
  • Złożone wyniki (quiz, analizator tekstu, mandala) — zawsze kombinacja kilku prostych, już znanych technik.