Coding for KidsCoding for Kids
Luovat TasotHaasteetOpettajan Opas
Äänestä ominaisuuksia
Edistynyt Python-kehityskurssi
Luku
>
Taso

Edistyneet funktiot
Lambda-funktiot

Tavoite

Käytä lambda-funktioita dokumentoidaksesi joitakin kulutustavaroita, jotta ne voidaan myöhemmin kerätä lähettämistä varten.

Joidenkin kentän hedelmät ja marjat ovat melkein valmiita poimittaviksi, jotta ne voidaan varastoida, lähettää ja myydä. Olisi hyvä idea merkitä ylös ne tuotteet, jotka ovat melkein valmiita, jotta sinulla olisi arvio siitä, kuinka monta tuotetta tältä kentältä pakataan ja lähetetään.

Koodisi optimoimiseksi voit käyttää lambda-funktioita. Tämä on toinen tapa luoda mukautettuja funktioita, ja ne ovat nopeampia, kun luot funktioita, jotka ovat yksinkertaisempia.

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

Yllä olevassa esimerkissä sinulla on kaksi funktiota, mukautettu funktio ja lambda-funktio. Vaikka ne on kirjoitettu eri tavalla, ne ovat toiminnallisesti samat. Lambda-funktio on vain helpompi käyttää ja sen voi määrittää nopeasti kesken koodin. Siitä huolimatta normaali tapa määritellä funktioita on edelleen erittäin hyödyllinen monimutkaisempia koodijonoja varten.

Kentällä on kaksi (2) tuotetyyppiä: "fruits" ja "berries". Näistä kahdesta (2) tyypistä löytyy kolme (3) hedelmää: apples, pears ja oranges; ja kolme (3) marjaa: red, blue ja purple.

Aloita määrittelemällä yllä kuvatun kaltainen lambda-funktio nimeltä calculate. Tämä mahdollistaa sesongille ennustettujen tuotteiden määrän laskemisen lisäämällä kolme kappaletta ja kertomalla ne kahdella (2). Luo toinen lambda-funktio nimeltä estimate arvioidaksesi kerättävät tuotteet mukautetun speak-funktion avulla. Lopuksi määritä lambda-funktio nimeltä total, joka lisää kaksi arvoa yhteen ja vähentää kolmannen arvon, nimeltä loss.

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

Luo muuttujat jokaiselle kolmelle (3) hedelmälle ja lisää kentällä olevien hedelmien lukumäärä. Kävele tummalle X-merkkipaikalle ja käytä lambda-funktiota calculate() kaikkien kolmen hedelmämuuttujan kanssa ja tallenna arvo mukautettuun muuttujaan nimeltä fruit_number, kuten näin: fruit_number = calculate(orange,pear,apple). Jatka käyttämällä lambda-funktiota estimate() käyttäen fruit_number lukuna ja "fruits" nimenä, kuten näin: estimate(fruit_number, "fruits" ).

Kun olet valmis hedelmien kanssa, kävele vaalealle X-merkkipaikalle ja toimi samalla tavalla marjojen kanssa. Määritä muuttujat kolmen (3) marjan kohdalle niiden pensaiden lukumäärän perusteella, jonka laskit kentällä, ja määritä lambda-funktio samalla tavalla kuin hedelmissä, kuten näin: berry_number = calculate(red,blue,purple). Käytä lambda-funktiota estimate käyttäen berry_number lukuarvona ja "berries" nimenä.

On olemassa muuttumaton nimeltä doc, joka sisältää edellisen kuukauden arviot menetetystä tuotteesta. Siirry varastoon, kävele kohti kultaisen X-merkin paikkaa ja käytä speak()-funktiota tämän muuttumattoman avulla lukeaksesi pöydällä olevan asiakirjan, jotta voit selvittää edellisen kuukauden lukemat.

Kun edellisen kuukauden luvut ovat tiedossasi, kävele tummalle X-merkkipaikalle purppuraisella matolla, käänny pöytää kohti saadaksesi selville tämän kuukauden kokonaistulokset. Luo muuttuja nimeltä season laskeaksesi kauden yhteenlasketut summat, käyttäen fruit_number ja berry_number lukuna, ja käyttämällä doc-muuttumattomasta selvittämääsi lukua tappion arvona, kuten näin: season = total(berry_number,fruit_number, number found in doc constant)

Jatka käyttämällä lambda-funktiota estimate() käyttäen muuttujaa season lukuarvona ja "products" nimenä saadaksesi tason päätökseen.

Koodikirja