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

Geavanceerde functies
Lambda-functies

Doel

Gebruik lambda-functies om enkele verbruiksartikelen te documenteren zodat ze later verzameld kunnen worden voor verzending.

Enkele van de fruit en bessen op het veld zijn bijna rijp om geplukt te worden zodat ze opgeslagen, verzonden en verkocht kunnen worden. Het zou een goed idee zijn om de items die bijna klaar zijn in kaart te brengen zodat je een schatting hebt van hoeveel producten uit dit veld worden ingepakt en verzonden.

Om je code te optimaliseren kun je lambda-functies gebruiken, dit is een andere manier om aangepaste functies te maken, maar het is sneller wanneer de functies die je maakt eenvoudiger zijn.

# Normal Custom Function def calculate(x , y , z) : return( (x+y+z) *2 ) # Lambda Function calculate = lambda x,y,z : (x + y + z) * 2

In het bovenstaande voorbeeld heb je twee functies, een aangepaste functie en een lambda-functie. Hoewel ze verschillend geschreven zijn, functioneren ze hetzelfde; de lambda-functie is gewoon gemakkelijker in gebruik en kan snel ter plekke in het midden van de code worden opgezet. Dat gezegd hebbende, is de normale methode om functies te definiëren nog steeds zeer bruikbaar voor complexe code-sequenties.

Er zijn twee (2) typen items die in het veld gecategoriseerd kunnen worden: fruits en berries. Van deze twee (2) typen zijn er drie (3) fruitsoorten: apples , pears en oranges ; en er zijn drie (3) bessen: red , blue en purple .

Stel eerst de hierboven geïllustreerde lambda-functie in, genaamd calculate, dit stelt ons in staat het aantal voorspelde items voor het seizoen te bepalen door drie items op te tellen en het resultaat met twee (2) te vermenigvuldigen. Maak een andere lambda-functie genaamd estimate om een schatting te maken van de items die verzameld zullen worden, als een aangepaste speak-functie. Stel ten slotte een lambda-functie in genaamd total die twee waarden bij elkaar optelt en een derde waarde genaamd loss aftrekt.

# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)

Maak variabelen voor elk van de drie (3) fruitsoorten, en tel het aantal van elk dat op het veld staat. Ga naar het donkere X-punt en gebruik de lambda-functie calculate() met alle drie de fruitvariabelen, en sla de waarde op in een aangepaste variabele genaamd fruit_number, zoals: fruit_number = calculate(orange,pear,apple). Ga hierna verder met het gebruik van de estimate() lambda-functie waarbij fruit_number wordt gebruikt als het nummer, en "fruits" als de naam, zoals: estimate(fruit_number, "fruits" ).

Zodra je klaar bent met het fruit, ga naar het lichte X-punt en doe hetzelfde voor de bessen. Stel variabelen in voor de drie (3) bessen met het aantal struiken dat je op het veld telt, en stel daarna de lambda-functie in op dezelfde manier als bij het fruit, zoals: berry_number = calculate(red,blue,purple). Gebruik de estimate lambda-functie met berry_number en "berries" als argumenten.

Er is een constante genaamd doc die de schattingen van verloren producten van vorige maand bevat. Ga naar het opslagpand, loop richting het gouden X-punt en gebruik de speak() functie met de constante om een document op de tafel te lezen, zodat je de cijfers van vorige maand kunt bepalen.

Zodra je de cijfers van vorige maand kent, ga naar het donkere X-punt over het paarse tapijt, richt je op de tafel zodat je de totalen voor deze maand kunt bepalen. Maak een variabele genaamd season om de seizoenstotalen te berekenen, gebruik fruit_number en berry_number als de getallen, en gebruik het nummer dat je hebt bepaald uit de doc constante als de loss-parameter, zoals: season = total(berry_number,fruit_number, number found in doc constant)

Vergeet niet door het gebruik van de estimate() lambda-functie met de season variabele als de nummer-parameter en "products" als de naam-parameter, om het level te voltooien.

Codeboek