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

Geavanceerde functies
Geneste functies

Doelstelling

Verzamel, herverdeel en berg de door de machines geproduceerde stof op met behulp van geneste functies.

Soms wil je functies binnen andere functies plaatsen om de mogelijkheden van die functie uit te breiden. Deze worden geneste functies of innerlijke functies genoemd; ze hebben verschillende toepassingen, van het creëren van eenvoudig herbruikbare code binnen een functie tot het beschermen van je functies tegen externe manipulatie.

Binnen de werkplaats staan er verschillende stoffen-machines, sommige bevatten stof die klaar is voor opslag, andere hebben draad nodig om de stofproductie af te ronden. Bij elke machine staat een tapijt van ofwel "red" of "green" voor, wat aangeeft hoe deze wordt gebruikt. In de code-editor zal een functie worden geschreven die ons in staat stelt de machine te bedienen en materialen van de machine te verzamelen of te plaatsen.

def operate_machine(color): def collect_cloth(): # Collect Code player.speak("Cloth is ready for storage") def place_thread(): # Place Code player.speak("Machine needed more materials") if color == "green": collect_cloth() if color == "red": place_thread()

De functie heet operate_machine en neemt een argument genaamd color. Afhankelijk van welk kleurtapijt zich voor de machine bevindt, zal het doorgeven van "red" of "green" als argument de werking van de machine wijzigen, zodat je ofwel items kunt plaatsen of verzamelen.

Binnen de functie vind je twee geneste functies, genaamd collect_cloth() en place_thread(), die gebruikt worden voor de doeleinden die uit hun namen blijken. Er ontbreken regels die nodig zijn om hun taak uit te voeren. Voeg bij collect_cloth() de regel player.collect("cloth") toe, gevolgd door player.speak("Quilt is ready for storage"), en voeg bij place_thread() de regel player.place("thread") toe, gevolgd door player.speak("Machine needed more materials").

Zodra de ontbrekende code-regels aan de geneste functies zijn toegevoegd, loop je naar het lichte X-teken voor de kist en verzamel je "thread" die in de machine gebruikt zal worden, op deze manier: player.collect("thread").

Loop vervolgens naar de donkere X-tekens binnen de werkplaats en gebruik de aangepaste functie operate_machine terwijl je naar de machines kijkt. Voeg als argument "red" of "green" toe, afhankelijk van het kleurtapijt waarop het X-teken zich bevindt, bijvoorbeeld: operate_machine("red"). Hiermee kun je de draad plaatsen en de stof verzamelen.

Zodra je alle stof hebt verzameld, loop je naar het gouden X-teken naast de kist achterin en gebruik je de place() functie om de stof op te bergen. Maak een variabele genaamd cloths, voeg hier het aantal verzamelde stoffen aan toe en berg het op in de kist om het level te voltooien, zoals: player.place(cloths).

Codeboek