Coding for KidsCoding for Kids
Creatieve LevelsUitdagingenLerarengids
Stem op functies
Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau

Decorators
Decorators aan elkaar koppelen

Doel

Versier het dak met gekleurde vlaggen door decorators aan elkaar te koppelen.

Het dak krijgt wat frisse lucht nadat het zo lang opgesloten zat in die keuken; sommige lijnen hebben geen vlaggen. Het zou een goed idee zijn om ze hier op te zetten, maar het kan lastig zijn omdat je verschillende vlaggen nodig hebt om een lijn op te zetten. Je kunt dat bereiken door decorators aan elkaar te koppelen.

Decorators worden aan elkaar gekoppeld door het @-teken te verdubbelen, wat betekent dat je meerdere decorators aan één functie koppelt. Bijvoorbeeld, hiermee kun je een functie omringen met twee decoratorfuncties:

# 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")

De bovenstaande code toont een functie met gekoppelde decorators, waarbij deze decorators in de functie verweven zijn zodat er blauwe vlaggen aan de randen van de lijn geplaatst worden, de binnenste laag rode vlaggen krijgt en uiteindelijk in het midden een groene vlag wordt geplaatst. Ze worden allemaal toegevoegd aan een lijst genaamd line; dit is de methode die gebruikt zal worden om de vlaggen op de lijnen te plaatsen.

Begin door naar het gouden X-teken te lopen en gebruik de read()-functie om de instructies op het bord te bekijken. Hierin wordt aangegeven welke vlaggen waar geplaatst moeten worden. Er zijn drie (3) verschillende soorten gekleurde vlaggen: "red", "green" en "blue". Elke lijn zal alle drie de vlaggen hebben, één (1) in het midden van de lijn, twee (2) in de binnenste lijn en twee (2) in de buitenste lijn, wat in totaal vijf (5) vlaggen per lijn oplevert, net als de vooraf gemaakte lijn aan de linksonderkant van de kaart.

Loop naar het lichte X-teken en gebruik de collect()-functie om de "flags" uit de kist te pakken. Vervolgens loop je naar de donkere X-tekens en, van links naar rechts, begin je de vlaggen in de volgorde te plaatsen zoals beschreven in de instructies die je eerder hebt gelezen. Gebruik daartoe de middelste functies; bijvoorbeeld: middle_green() creëert een vlaglijn als volgt: ["blue", "red", "green" ,"red","blue" ]. Gebruik daarna de place()-functie om de lijn te zetten met behulp van de line-lijst, zoals dit: place(line).

Tussen elk X-teken maak je de line-lijst leeg met behulp van de clear()-functie, zoals dit: line.clear(). Dit stelt je in staat de lijst opnieuw te gebruiken zonder voor elke lijn een nieuwe aan te maken. Het laatste X-teken aan de rechterkant vereist een aangepaste functie:

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

Gebruik de twee @-symbolen om decorators aan de functie toe te voegen, en vul vervolgens de lijnappend en de kleur van de vlag in de string in. Doe dit in overeenstemming met de instructies op het bord om het level te voltooien.

Codeboek