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

דקורטורים
דקורטורים מורכבים יותר

מטרה

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

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

הפיצות צריכות להיות מונחות בתנור אך קודם כל עליכם לאסוף עוד "firewood" בפינה השמאלית התחתונה של המפה. לאחר איסוף זה, אספו את הסל מהדלפק ליד התנור השמאלי, סל זה מכיל "pizza" שיש לאפות בתנורים.

ישנה פונקציה והדקורטור שלה מוגדרים בעורך הקוד; הפונקציה משמשת למיקום ואפיית ה"pizza" בתנור, והדקורטור בודק האם התנור נמצא בטמפרטורה הנכונה. אם לא, מוחלף ה"firewood" במקום.

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

'סעו' לסימני ה-X הבהירים והשתמשו בפונקציה read() כאשר אתם פונים לתנור, כדי לזהות את הטמפרטורה של התנור. לאחר מכן כתבו את הפונקציה המעוטרת bake_pizza() והוסיפו כארגומנט את הטמפרטורה שקראתם, לדוגמה: bake_pizza(450).

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

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

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

לאחר שכל הפריטים הדרושים הונחו בתנורים, ורשימת ingredients טופלה, עברו לסימני ה-X הכהים כדי ליצור את הסלטים. בעורך מוגדרת פונקציה ודקורטור; הפעם הם לא מחוברים וחייבים להיות מוכרזים ידנית, לדוגמה: salad = add_toppings(toss_salad("ranch","carrot")). קבוצת פונקציות זו מקבלת שני (2) ארגומנטים: dressing ו-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))

כל סימן X כהה ממוקם על שטיח צבעוני, כאשר על כל אחד יש להכין סלט שונה באמצעות המרכיבים שאספתם מהארון. על השטיח הצהוב, הכינו סלט עם: "cesar" ו-"cheese"; על השטיח הירוק, הכינו סלט עם: "oil" ו-"tomato"; ועל השטיח הכחול, הכינו סלט עם: "ranch" ו-"carrot".

ברגע ששלושת הסלטים יוכנו באמצעות הפונקציה המעוטרת toss_salad(dressing, vegetable) בפורמט זה, השלב יושלם.

ספר קוד