Avansert Pythonutviklingskurs
Kapittel
>
Nivå
Avanserte funksjoner
Nøstede funksjoner
Mål
Samle, omfordele og lagre stoff produsert av maskinene ved hjelp av nestede funksjoner.
Noen ganger ønsker du å plassere funksjoner inni andre funksjoner for å utvide funksjonens muligheter. Disse kalles Nestede funksjoner eller indre funksjoner, og de har ulike bruksområder, fra å lage enkel gjenbrukbar kode inne i en funksjon, til å beskytte funksjonene dine mot ekstern manipulasjon.
Inne i verkstedet er det flere maskiner som produserer stoff, noen har stoff som er klart til lagring, andre krever tråd for å fullføre produksjonen av stoffet. Hver maskin har enten et "red" eller "green" eller grønt teppe foran seg som viser hvordan den skal brukes. I kodeeditoren vil en funksjon bli skrevet som lar oss betjene maskinen og enten samle eller legge materialer fra maskinen.
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()
Funksjonen heter operate_machine og tar et argument med navnet color. Avhengig av hvilket farget teppe maskinen har foran seg, vil inntasting av enten "red" eller "green" som argument endre maskinens operasjon og la deg enten legge eller samle materialer.
Inne i funksjonen finner du to Nestede funksjoner, kalt collect_cloth() og place_thread(), brukt til de formålene som navnene antyder. De mangler linjer som kreves for å utføre handlingen sin; i collect_cloth() legg til linjen player.collect("cloth"), etterfulgt av player.speak("Quilt is ready for storage"), og i place_thread() legg til linjen player.place("thread") etterfulgt av player.speak("Machine needed more materials").
Når de manglende kodelinjene er lagt til de nestede funksjonene, gå til det lyse X-merket foran kassen og samle "thread" for å bruke i maskinen, slik: player.collect("thread").
Gå deretter til de mørke X-markene inne i verkstedet og bruk den egendefinerte funksjonen operate_machine mens du vender mot maskinene. Legg til enten "red" eller "green" som et argument avhengig av hvilket farget teppe X-merket befinner seg på, for eksempel: operate_machine("red"). Dette vil la deg legge tråden og samle stoffet.
Når du har samlet alt stoffet, gå til det gylne X-merket ved siden av kassen bak og bruk funksjonen place() for å lagre stoffet. Opprett en variabel kalt cloths, legg til antall stoffer du har samlet og lagre den i kassen for å fullføre nivået, slik: player.place(cloths).