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

Decoratori
Optimizarea decoratorilor

Obiectiv

Colectează ingrediente și prepară diferite tipuri de pizza folosind decoratori.

Acum că cuptoarele au fost setate, este timpul să pregătim niște pizza pentru a le găti ulterior. Acum că știm cum să folosim decoratori, putem lucra la optimizarea lor puțin. Folosind simbolul @ în cod, urmat de numele decoratorului și plasând acest cod deasupra funcției decorate, putem atașa automat un decorator fără a folosi o variabilă. De exemplu:

# Decorator def create_pizza(func): def set(): pizza = ["dough","red sauce","cheese"] player.combine(pizza) func() return set # Function being decorated with @ @create_pizza def peperoni_pizza(): player.place("Peperoni") player.speak("Peperoni Pizza has been prepped") # Using pre-decorated function peperoni_pizza()

Merită remarcat că această tehnică simplifică procesul prin faptul că o funcție este pre-decorată înainte de utilizare, însă uneori s-ar putea să dorești în continuare să atribui un decorator unei variabile pentru o flexibilitate mai mare.

Pentru a începe, mergi la marca X de culoare aurie și ia ingredientele pentru a face pizza. Ingredientele necesare pentru a face pizza sunt: "cheese", "dough", "red sauce", "peperoni", "ham", "olive", "pepper", "onion" și "pineapple". Majoritatea acestor ingrediente se află într-o Matrice care reprezintă rafturile din cămară, folosește List Comprehensions pentru a stoca toate elementele pe care dorești să le iei într-o listă.

shelves = [ ["cheese", "dough", "jar"], ["jar", "red sauce", "jar"], ["peperoni", "jar" , "ham"], ["olive", "pepper", "onions"] ] ingredients = [ item for row in shelves for item in row if not "jar" in item]

În codul de mai sus, lista ingredients parcurge rândurile din Matricea numită shelves și elimină toate elementele denumite "jar". Această List Comprehension ne economisește timpul de a adăuga manual totul împreună. Folosește funcția speak() cu lista de ingrediente pentru a verifica elementele pe care le vei folosi.

Odată ce toate ingredientele au fost colectate, cu excepția "pineapple", funcțiile pentru prepararea pizza trebuie să aibă funcții place() adăugate pentru a-și completa utilitatea. Aceste funcții sunt configurate în editorul de cod și sunt numite: peperoni_pizza() care necesită: "peperoni", vegetable_pizza() care necesită: "olive", "pepper", "onion", și pineapple_pizza() care necesită: "ham" și "pineapple".

Mergi la mărcile X întunecate și folosește funcțiile decorate pentru a pregăti pizza. Pe mărcile X cu covoare roșii creează peperoni_pizza(), pe covoare verzi creează vegetable_pizza() și pe covoare galbene creează pineapple_pizza(). Pe drumul spre covorul galben, oprește-te la marca X deschisă, îndreaptă-te spre dulap și folosește funcția collect() pentru a lua "pineapple". Pregătește toate pizzele pentru a finaliza cu succes nivelul.

Carte de Cod