Coding for KidsCoding for Kids
שלבים יצירתייםאתגריםמדריך למורים
הצבע על תכונות
קורס פיתוח מתקדם בפייתון
פרק
>
רמה

קישוטים
אופטימיזציה של דקורטורים

מטרה

אסוף מרכיבים והכן סוגי פיצות שונים באמצעות דקורטורים.

עכשיו, לאחר שהתנורים הוגדרו, הגיע הזמן להכין כמה פיצות כדי שנוכל לאפות אותן מאוחר יותר. עכשיו כשאנחנו יודעים כיצד להשתמש בדקורטורים, נוכל לייעל אותם במעט. על ידי שימוש בסימן @ בקוד, לאחריו שם הדקורטור והצבת קוד זה מעל הפונקציה המעוטרת, נוכל לצרף דקורטור באופן אוטומטי מבלי להשתמש במשתנה. לדוגמה:

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

ראוי לציין, שהשיטה הזו מפשטת את התהליך ע"י כך שפונקציה מעוטרת מראש לפני השימוש, אך לפעמים עדיין תרצה להקצות דקורטור למשתנה למען גמישות רבה יותר.

כדי להתחיל, לך לסימן ה-X הזהוב ואסוף את המרכיבים להכנת הפיצה. המרכיבים להכנת הפיצה הם: "cheese", "dough", "red sauce", "peperoni", "ham","olive", "pepper", "onion" ו-"pineapple". רוב המרכיבים הללו נמצאים בתוך מטריצה המייצגת את מדפי המטבח, השתמש ב-List Comprehensions כדי לאחסן את כל הפריטים שברצונך לאסוף ברשימה.

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]

בקוד לעיל, הרשימה ingredients עוברת על השורות של המטריצה בשם shelves ומסירה את כל הפריטים במטריצה המכונים "jar". שימוש ב-List Comprehension זה חוסך לנו זמן במקום להוסיף הכל ידנית. השתמש בפונקציה speak() עם רשימת המרכיבים כדי לוודא את הפריטים שבהם תשתמש.

לאחר איסוף כל המרכיבים, למעט "pineapple", הפונקציות להכנת הפיצות דורשות הוספת פונקציות place() כדי להשלים את היעילות שלהן. פונקציות אלה מוגדרות בעורך הקוד ושמם: peperoni_pizza() שדורשת: "peperoni", vegetable_pizza() שדורשת: "olive", "pepper", "onion", ו-pineapple_pizza() שדורשת: "ham" ו-"pineapple".

לך לסימני ה-X האפלים והשתמש בפונקציות המעוטרות כדי להכין את הפיצות. על סימני X עם שטיחים אדומים, צור peperoni_pizza(), על שטיחים ירוקים, צור vegetable_pizza() ועל שטיחים צהובים, צור pineapple_pizza(). בדרכך לשטיח הצהוב, עצור בסימן X הקל, פנה לכיוון הארון והשתמש בפונקציה collect() כדי לאסוף את "pineapple".

הכן את כל הפיצות על מנת להשלים את השלב בהצלחה.

ספר קוד