Coding for KidsCoding for Kids
Niveluri CreativeProvocăriGhid pentru Profesori
Votează pentru funcții
Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel

Decoratori
Decoratori mai complecși

Obiectiv

Pune pizza în cuptor la temperaturile corecte și pregătește salate folosind decoratori cu argumente.

Acum că pizza este deja pregătită, este timpul să le coci în cuptoare; după ce acestea sunt gata, ar trebui să pregătești salate care să însoțească pizza. Poți realiza aceste sarcini utilizând decoratori cu argumente, similar funcțiilor personalizate, putând transmite argumente și prin intermediul decoratorilor tăi.

Pizza trebuie să fie așezată în cuptor, dar mai întâi trebuie să aduni mai mult firewood în partea stângă jos a hărții. După ce ai colectat-o, adună coșul de la tejghea lângă cuptorul din stânga; acest coș conține pizza care trebuie coptă în cuptoare.

Există o funcție și decoratorul ei sunt configurate în editorul de cod. Funcția este folosită pentru a plasa și coace pizza în cuptor, iar decoratorul verifică dacă cuptorul are temperatura potrivită și, dacă nu are, se plasează firewood în schimb.

def place_oven(func): def check(temp): if temp < 450: player.speak("Oven is not hot enough") player.open() player.place("firewood") player.close() return return func(temp) return check @place_oven def bake_pizza(temp): player.open() player.place("pizza") player.close() player.speak("I am baking Pizza at %d degrees" % (temp))

Mergi la marcajele X luminoase și folosește funcția read() în timp ce te îndrepți spre cuptor, pentru a identifica temperatura cuptorului. Continuă prin a scrie funcția decorată bake_pizza() și adaugă temperatura pe care ai citit-o ca argument, de exemplu: bake_pizza(450).

În timp ce plasezi pizza și lemnele de foc în cuptoare, oprește-te la marcajul X auriu și îndreaptă-te spre dulap, unde poți colecta ingredientele pentru a pregăti salate. În prezent, ingredientele pentru salate sunt stocate într-o listă imbricată prezentată în editorul de cod, însă această listă este dezordonată și ar fi în interesul tău să ai elementele stocate într-o listă corectă pentru a le utiliza la salatele tale.

cabinet = [["lettuce"], ["carrot" ,"tomato"] , ["oil" , "ranch", "cesar"] , ["cheese"]] ingredients = [item for sublist in cabinet for item in sublist]

Creează o listă numită ingredients și folosește List Comprehension pentru a „aplatiza” lista imbricată. Acesta este procesul de eliminare a sublistelor din lista imbricată, astfel încât toate elementele să fie acum împreună într-o singură listă, mai degrabă decât în mai multe liste mici. După ce lista a fost aplatizată, folosește funcția speak() cu lista pentru a verifica ingredientele pe care urmează să le folosești.

După ce toate articolele necesare au fost plasate în cuptoare și lista ingredients a fost actualizată, mergi la marcajele X întunecate pentru a crea salatele. În editor este configurată o funcție și un decorator; de data aceasta, acestea nu sunt conectați și trebuie declarați manual, de exemplu: salad = add_toppings(toss_salad("ranch","carrot")). Acest set de funcții primește două (2) argumente: dressing și vegetable.

def add_toppings(func): def add(dressing, vegetable): player.place(dressing) player.place(vegetable) func(dressing, vegetable) return add @add_toppings def toss_salad(dressing, vegetable): player.combine("lettuce", dressing, vegetable) player.speak("I am preparing salad with %s dressing and %s" % (dressing, vegetable))

Fiecare marcaj X întunecat se află pe o cârpă colorată; fiecare are o salată diferită care trebuie creată folosind ingredientele pe care le-ai ales din dulap. Pe cârpa galbenă, creează o salată folosind: cesar și cheese, pe cârpa verde creează o salată folosind: oil și tomato, iar pe cârpa albastră creează o salată folosind: ranch și carrot.

Odată ce toate cele trei (3) salate sunt pregătite folosind funcția decorată toss_salad(dressing, vegetable) în acest format, nivelul va fi complet.

Carte de Cod