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

Geavanceerde Functies
Partiële functies

Doelstelling

Pak en plaats bouwmaterialen die aan de kade werden geleverd met behulp van gedeeltelijke functies.

Enkele voorraden zijn net geleverd aan een kade; ze moeten worden ingepakt en opgeslagen zodat ze als bouwmaterialen kunnen worden gebruikt. De materialen moeten in doek worden gewikkeld en met draad worden vastgebonden. Het is belangrijk om alle items te wegen tijdens het inpakken, zodat ze later effectief getransporteerd kunnen worden. Om dit te vergemakkelijken, kunnen we dit proces optimaliseren door gebruik te maken van Gedeeltelijke Functies.

Een Gedeeltelijke Functie is een aangepaste functie die wordt ingekort doordat je geen argumentwaarden hoeft toe te voegen die grotendeels consistent zijn. Dit maakt het mogelijk functies die meerdere argumenten accepteren, uit te voeren met slechts één argument of met een door jou gekozen aantal.

from functools import partial

Begin met het importeren van partial vanuit de module genaamd functools, dit stelt je in staat om Gedeeltelijke Functies te maken. Importcode komt altijd bovenaan de code-editor.

Stel een functie in genaamd weight die drie(3) argumenten neemt: thread, cloth en material. Deze functie stelt je in staat het gewicht van de ingepakte materialen te berekenen. We kunnen dit proces verder optimaliseren door het via een gedeeltelijke functie te leiden.

def weight(thread, cloth, material): return 2 * thread + 5 * cloth + material * 10 package = partial(weight, 4, 2)

Maak een Gedeeltelijke Functie genaamd package, deze wordt opgezet op een vergelijkbare manier als lambda-functies. Gebruik partial() om de functie te vullen en voeg de naam van de functie toe evenals vaste waarden voor de argumenten die je wilt toewijzen.

Alle argumenten van de oorspronkelijke functie die je niet toewijst, worden de argumenten die door de Gedeeltelijke Functie moeten worden toegewezen. In het geval van de package() Gedeeltelijke Functie is dit het material argument.

Loop naar de donkere X-markeringen voor de kisten om verpakkingsmaterialen te pakken. Op de gele tapijt X-markering, gebruik de collect() functie om "thread" te verzamelen en loop naar de paarse tapijt X-markering en gebruik de collect() functie om "cloth" te verzamelen. Deze items zullen worden gebruikt om de materialen in te pakken.

Loop over de kade en pak alle bouwmaterialen, dit zijn: bricks, planks, red_bricks en wood. Nadat je ze hebt verzameld, voeg het aantal dat je van elk hebt verzameld toe aan een variabele genoemd naar het materiaal, bijvoorbeeld: bricks = 3.

Loop vervolgens naar de lichte X-markeringen voor de kisten en bereken het gewicht van elk bouwmateriaal voordat je het opslaat. Gebruik de speak() functie in combinatie met de package() Gedeeltelijke Functie om het gewicht te berekenen. Gebruik de materiaale variabelen als argumenten voor de package() functie, bijvoorbeeld:

player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))

Ga hierna verder door de place() functie te gebruiken om het materiaal in de kisten op te slaan, doe dit ook met de package() functie, zoals in het bovenstaande voorbeeld.

Op de lichte X-markering met het red tapijt, weeg en sla bricks op. Op de lichte X-markering met het blue tapijt, weeg en sla planks op. Op de lichte X-markering met het orange tapijt, weeg en sla red_bricks op. Op de lichte X-markering met het green tapijt, weeg en sla wood op. Sla en weeg alle vier (4) materialen in de juiste kisten om het level te voltooien.

Codeboek