دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
الدوال المتقدمة
الدوال المتداخلة
الهدف
جمع وإعادة توزيع وتخزين القماش المنتج بواسطة الآلات باستخدام الدوال المتداخلة.
في بعض الأحيان ستحتاج إلى وضع دوال داخل دوال أخرى من أجل توسيع قدرات الدالة. تُعرف هذه باسم الدوال المتداخلة أو الدوال الداخلية، ولها استخدامات متنوعة؛ بدءًا من إنشاء كود بسيط يمكن إعادة استخدامه داخل دالة، وحتى حماية دوالك من التلاعب الخارجي.
داخل الورشة يوجد عدة آلات لصناعة القماش، بعضها يحتوي على قماش جاهز للتخزين، والبعض الآخر يحتاج إلى خيط لإكمال إنتاج القماش. لكل منها سجادة إما بـ"red" أو "green" أمامها، والتي ستوضح كيفية استخدامها. في محرر الكود سيتم كتابة دالة تتيح لنا تشغيل الآلة وجمع أو وضع المواد من الآلة.
def operate_machine(color):
def collect_cloth():
# Collect Code
player.speak("Cloth is ready for storage")
def place_thread():
# Place Code
player.speak("Machine needed more materials")
if color == "green":
collect_cloth()
if color == "red":
place_thread()
اسم الدالة هو operate_machine وتأخذ معاملًا باسم color. اعتمادًا على لون السجادة الموجودة أمام الآلة، فإن إدخال إما "red" أو "green" كمعامل سيغير عملية الآلة، مما يتيح لك إما وضع أو جمع العناصر.
داخل الدالة ستجد دالتين متداخلتين، تسميان collect_cloth() وplace_thread()، والمستخدمتين للأغراض الموضحة بأسمائهما. تنقصهما الأسطر اللازمة لتنفيذ عمليتهما؛ ففي collect_cloth() أضف السطر player.collect("cloth")، والذي يتبعه player.speak("Quilt is ready for storage")، وفي place_thread() أضف السطر player.place("thread") والذي يتبعه player.speak("Machine needed more materials").
بمجرد إضافة الأسطر المفقودة إلى الدوال المتداخلة، توجه إلى علامة الإكس الخفيفة أمام الصندوق وجمع "thread" لاستخدامها في الآلة، مثل هذا player.collect("thread").
توجه إلى علامات الإكس الداكنة داخل الورشة واستخدم الدالة المخصصة operate_machine أثناء مواجهة الآلات. أضف إما "red" أو "green" كمعامل اعتمادًا على لون السجادة التي توجد عليها علامة الإكس، على سبيل المثال: operate_machine("red"). سيمكنك ذلك من وضع الخيط وجمع القماش.
بمجرد جمع جميع الأقمشة، توجه إلى علامة الإكس الذهبية بجانب الصندوق في الخلف واستخدم الدالة place() لتخزين القماش. أنشئ متغيرًا باسم cloths، وأضف إليه عدد الأقمشة التي قمت بجمعها وخزنه في الصندوق لإكمال المستوى، مثل هذا: player.place(cloths) .