Coding for KidsCoding for Kids
Kreative NivåerUtfordringerLærerveiledning
Stem på funksjoner
Avansert Pythonutviklingskurs
Kapittel
>
Nivå

Avanserte funksjoner
Lambda-funksjoner

Mål

Bruk lambda-funksjoner for å dokumentere noen forbruksvarer slik at de kan samles inn for sending senere.

Noen av fruktene og bærene på marken er nesten klare til å bli plukket slik at de kan lagres, sendes og selges. Det kan være en god idé å kartlegge de varene som er nesten klare, slik at du har et estimat på hvor mange produkter fra denne marken som blir pakket og sendt.

For å optimalisere koden din, kan du bruke lambda-funksjoner, som er en annen måte å lage tilpassede funksjoner på, men det går raskere når funksjonene du lager er enklere.

# Normal Tilpasset Funksjon def calculate(x , y , z) : return( (x+y+z) *2 ) # Lambda-funksjon calculate = lambda x,y,z : (x + y + z) * 2

I eksemplet ovenfor har du to funksjoner, en tilpasset funksjon og en lambda-funksjon. Selv om de er skrevet forskjellig, er de funksjonelt det samme, og lambda-funksjonen er bare enklere å bruke og kan settes opp raskt "on the fly" midt i koden. Det skal sies at den vanlige metoden for å definere funksjoner fortsatt er veldig nyttig for komplekse kode-sekvenser.

Det finnes to (2) typer elementer som kan kategoriseres på marken: "fruits" og "berries". Av disse to (2) typene, finnes det tre (3) frukter: apples, pears og oranges; og det finnes tre (3) bær: red, blue og purple.

Først setter du opp lambda-funksjonen illustrert ovenfor, kalt calculate, som lar oss få antallet elementer estimert for sesongen ved å legge sammen tre elementer og multiplisere dem med to (2). Lag en annen lambda-funksjon kalt estimate for å estimere antallet som vil bli samlet inn, som en tilpasset "speak"-funksjon. Til slutt setter du opp en lambda-funksjon kalt total som legger sammen to verdier og trekker fra en tredje verdi kalt loss.

# Beregn elementer calculate = lambda x,y,z : (x + y + z) * 2 # Estimer elementer estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Totaler alle elementer total = lambda num1, num2, loss : ( (num1 + num2) - loss)

Lag variabler for hver av de tre (3) fruktene, og legg til antallet av hver som er på marken. Gå til det mørke X-merket og bruk lambda-funksjonen calculate() med alle tre fruktvariablene, og lagre verdien i en tilpasset variabel kalt fruit_number, slik: fruit_number = calculate(orange,pear,apple). Fortsett med å bruke lambda-funksjonen estimate() med fruit_number som antall, og "fruits" som navn, slik: estimate(fruit_number, "fruits" ).

Når du er ferdig med frukten, gå til det lyse X-merket og gjør det samme med bærene. Sett opp variabler for de tre (3) bærene med antallet busker du teller på marken, og sett deretter opp lambda-funksjonen på samme måte som du gjorde med frukten, slik: berry_number = calculate(red,blue,purple). Bruk lambda-funksjonen estimate med berry_number og "berries" som argumenter.

Det finnes en konstant kalt doc som inneholder forrige måneds estimater for tapt produkt. Gå videre til lagerbygningen, gå mot det gylne X-merket og bruk speak()-funksjonen med konstanten for å lese et dokument på bordet, slik at du kan fastslå forrige måneds tall.

Når du har fått vite forrige måneds tall, gå til det mørke X-merket over den lilla teppet, vend deg mot bordet slik at du kan bestemme totalsummen for denne måneden. Lag en variabel kalt season for å beregne sesongens totalsum, bruk fruit_number og berry_number som tall, og bruk tallet du fant fra doc-konstanten som loss-argument, slik: season = total(berry_number,fruit_number, number found in doc constant)

Avslutt med å bruke lambda-funksjonen estimate() med variabelen season som tallargument og "products" som navneargument for å fullføre nivået.

Kodebok