Debugowanie Turtle
Grafika dodaje kilka nowych sposobów popełniania błędów — analizujmy je według schematu „symptom → powodować → korektę”
Grafika dodaje kilka nowych, Turtle specyficznych sposobów na zrobienie czegoś źle – Przeanalizujmy najczęstsze z nich według schematu „objawy → powodują → korekcję”
| Objaw | Przyczyna | Poprawka |
|---|---|---|
| Okno otwiera się i od razu zamyka | Program się zakończył, a Python zamknął okno razem z nim | Dodaj screen.exitonclick() (czekając na kliknięcie) lub turtle.done() na samym końcu programu |
| Żółw „patrzy nie tam” | Pomyłki left()/right(), albo jeden z zwrotów w sekwencji zostaje zapomniany | Przeczytaj program linijka po linijce i zapytaj każdą drużynę: „Czy to ruch czy obrót?” |
| Część obrazu nie pojawia się na ekranie | Zapomniane pendown() po penup() – żółw porusza się uczciwie, tylko nic nie rysuje | Sprawdź, czy długopis jest opuszczony przed każdym „prawdziwym” |
| Kształt jest narysowany, ale nie ma wypełnienia | Zapomniane end_fill(), albo kontur nie zamknął się dokładnie tam, gdzie się zaczął | Upewnij się, że ścieżka między begin_fill() oraz end_fill() wraca do punktu wyjścia |
| Część rysunku „znika” za krawędzią okna | Współrzędne wyszły poza widoczny obszar — okno nie jest nieskończone | Sprawdź screen.setup() i nie wychodź poza połowę szerokości/wysokości okna od środka |
TclError lub okno w ogóle się nie otwiera na serwerze/Linux bez monitora | Turtle używa Tk, natywnego GUI, który potrzebuje prawdziwego (lub wirtualnego) wyświetlacza | Uruchamiaj Turtle na komputerze z tradycyjnym komputerem stacjonarnym; automatyzacja bez monitora wymaga wirtualnego wyświetlacza, jak Xvfb – to już nie jest poziom podstawowy |
| Praktyka Turtle nie otwiera się bezpośrednio w przeglądarce na tej stronie | Środowisko przeglądarkowe Python (Pyodide) nie potrafi otwierać natywnych okien Tk- — to ograniczenie techniczne, a nie błąd w Twoim kodzie) | Takie praktyki są oznaczone jako „wymagane Python lokalne” |
Przewiduj przed startem
Podobnie jak w przypadku liczb w rozdziale 5, najlepszym nawykiem jest przewidywanie kursu i przybliżanie współrzędnych Żółwie do startu, a nie później. Jeśli przewidywanie nie zgadza się z rzeczywistością — albo znalazłeś błąd, albo nie rozumiesz dokładnie zespołu. W obu przypadkach warto to przeanalizować.
Żółw stoi na (0, 0), kurs 0°. Wykonano polecenia: left(90), right(45). Jaki jest końcowy kurs? Sprawdź siebie, wykonując to w prawdziwym oknie Turtle.
W programie, który rysuje kwadrat, po trzecim obrotie otrzymujesz pięciokąt, a nie kwadrat. Ile razy para forward()/right(90) powtarza się w kodzie? Ile powinno ich być?