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". قم بتحضير جميع البيتزا لإكمال المستوى بنجاح.

كتاب الكود