Coding for KidsCoding for Kids
Poziomy KreatywneWyzwaniaPrzewodnik dla Nauczycieli
Głosuj na funkcje
Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Dekoratory
Łączenie dekoratorów

Cel

Udekoruj dach kolorowymi flagami poprzez łączenie dekoratorów.

Dach wreszcie cieszy się świeżym powietrzem po długim pobycie w tej kuchni, jednak niektóre linie nie mają flag. Warto je ustawić, kiedy już tu jesteś, ale może to być trudne, zważywszy na to, że do ustawienia linii potrzebne są różne flagi. Możesz to osiągnąć, łącząc dekoratory.

Dekoratory łączy się poprzez podwajanie znaków @, czyli przypisanie wielu dekoratorów do jednej funkcji. Na przykład umożliwia to umieszczenie funkcji między dwiema funkcjami dekoratorów:

# List to add flags to a line line = [] # Decorator adding a red flag def red_flag(func): def add_flag(): line.append("red") player.speak("Two red flags added to the line") func() line.append("red") return add_flag # Decorator adding a blue flag def blue_flag(func): def add_flag(): line.append("blue") player.speak("Two blue flags added to the line") func() line.append("blue") return add_flag # Decorated Function adding line and middle flag @blue_flag @red_flag def middle_green(): line.append("green") player.speak("A green flag has been added to the line")

Kod powyżej ilustruje funkcję z przypisanymi łączonymi dekoratorami, które są wplecione w funkcję tak, aby na krawędziach linii umieszczone były niebieskie flagi, warstwa wewnętrzna ma czerwone flagi, a na końcu pośrodku znajduje się zielona flaga. Wszystkie są dodawane do listy o nazwie line, co jest metodą używaną do ustawiania flag na liniach.

Zacznij od przejścia do złotego znaku X i użycia funkcji read() do sprawdzenia instrukcji podanych na tabliczce. Tutaj znajdziesz informację, jakie flagi umieścić gdzie, przy czym jest trzy (3) różne rodzaje kolorowych flag: "red", "green" oraz "blue". Każda linia będzie miała wszystkie trzy flagi, jedna (1) w środku linii, dwie (2) w wewnętrznej linii i dwie (2) w zewnętrznej linii, co daje łącznie pięć (5) flag na linię, podobnie jak w przygotowanej linii w dolnej lewej części mapy.

Przejdź do jasnego znaku X i użyj funkcji collect() aby zabrać "flags" z skrzyni. Następnie przejdź do ciemnych znaków X i od lewej do prawej zacznij umieszczać flagi w kolejności opisanej w instrukcjach, które przeczytałeś wcześniej. Użyj funkcji środkowych, aby to osiągnąć, na przykład: middle_green() tworzy linię flag w takiej kolejności: ["blue", "red", "green" ,"red","blue" ]. Następnie użyj funkcji place() aby ustawić linię używając listy line, takiej jak: place(line).

Pomiędzy każdym znakiem X wyczyść listę line używając funkcji clear(), np. line.clear(), co pozwoli Ci na ponowne użycie tej listy bez konieczności tworzenia nowej dla każdej linii. Ostatni znak X z prawej wymaga niestandardowej funkcji:

@ @ def middle_custom(): line.append( Insert append ) player.speak("%s flag has been added to the line" % ( insert flag ))

Użyj dwóch symboli @ aby dodać dekoratory do funkcji, a następnie uzupełnij dodanie flagi do listy oraz kolor flagi w ciągu znaków. Zrób to zgodnie z instrukcjami na tabliczce, aby ukończyć poziom.

Księga Kodów