Coding for KidsCoding for Kids
المستويات الإبداعيةالتحدياتدليل المعلم
صوت للميزات
دورة تطوير بايثون المتقدمة
الفصل
>
المستوى

الدوال المتقدمة
الإغلاقات

الهدف

تنظيم إمدادات المياه في المزرعة عن طريق إعداد واستخدام الإغلاقات.

هناك أربعة خزانات مياه مصممة لري الأراضي المحيطة بالمزرعة، وقد حان الوقت لتغيير إعداداتها لضمان توزيع الكمية الصحيحة من المياه في الأماكن المناسبة. ولتحقيق ذلك، يمكن تبسيط المهمة باستخدام الإغلاقات.

الإغلاقات هي دوال متداخلة صممت لتغليف البيانات، مما يقلل من عدد المتغيرات التي تحتاج إلى استخدامها ويخفي البيانات داخل الدالة بحيث لا يمكن التلاعب بها خارجيًا، بمعنى آخر، إغلاق الدالة.

من أجل تنظيم المياه في الخزانات، سنقوم بإنشاء دالة متداخلة تعمل كمضاعف. تعمل هذه الدالة بنفس طريقة الحلقة، حيث تحتوي الدالة الخارجية المسماة multiplier_of() على معامل يتم ضربه بمعامل الدالة الداخلية المسماة multiplier().

# Nested Function def multiplier_of(n): def multiplier(number): return number*n return multiplier

بمجرد الإعداد، نحتاج إلى تغليف الدالة عن طريق إنشاء الإغلاقات، مما يمنع الوصول إلى قيمها ويؤكد استخدامها.

# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]

الإغلاق أعلاه اسمه multiply_by_2() ويستخدم الدالة المتداخلة التي أنشأناها مع معامل محدد وهو 2، وهو الرقم الذي يتم ضبط الإغلاق على ضربه. ونتيجة لذلك، فإن أي رقم نضيفه كمعامل سيتم ضربه في اثنين (2) وهذه الخاصية لا يمكن تغييرها لكونها مغلقة.

بالانتقال إلى تنظيم خزانات المياه، قم بإعداد ثلاث (3) إغلاقات: multiply_by_2، multiply_by_3 وmultiply_by_5. قم بإعداد كل منها يدويًا باستخدام نفس التنسيق المستخدم في المثال المقدم سابقًا، مثل هذا: multiply_by_2 = multiplier_of(2) .

يوجد في هذا المستوى ثابت قاموسي يسمى tanks، والذي يحتوي كفهرس على ستة (6) ألوان: “red"، “blue"، “orange"، “purple"، “yellow" و“green". يحمل كل فهرس رقمًا يمثل كمية المياه التي تمر عبر واجهة الخزان، وسيتم استخدام هذا الرقم لتنظيم الخزان باستخدام إغلاقات "multiply_by" التي تمت مناقشتها سابقًا.

لتسهيل ذلك، سيتم إعداد دالة في المحرر تسمى regulate_water(), والتي تأخذ معاملين: اللون الذي يمثل الفهارس المذكورة أعلاه والمضاعف الذي يمثل إغلاق المضاعف المراد استخدامه. مثال على استخدام الدالة هو كما يلي: regulate_water(“red" , multiply_by_2 ) .

اتجه إلى السجاد الملون الذي يحمل علامة X المظلمة أعلاه وواجه الخزانات، واستخدم الدالة regulate_water() وقم بتعيين لون السجادة كالمعامل الأول وإغلاق المضاعف الصحيح كالمعامل الثاني. المضاعفات التي ستُستخدم على كل سجادة ملونة هي كما يلي:

multiply_by_2 - "red" and "green" multiply_by_3 - "blue" and "purple" multiply_by_5 - "orange" and "yellow"

نظم المياه على واجهات كل خزان لإكمال المستوى.

كتاب الكود