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

الدوال المتقدمة
الدوال الجزئية

الهدف

قم بتعبئة ووضع مواد البناء التي تم توصيلها إلى الرصيف باستخدام الدوال الجزئية.

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

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

from functools import partial

للبدء، يجب عليك استيراد partial من الوحدة المسماة functools، حيث سيمكنك ذلك من إنشاء الدوال الجزئية. يتم دائمًا وضع تعليمات الاستيراد في أعلى محرر الشيفرة.

أنشئ دالة باسم weight واجعلها تأخذ ثلاث (3) معاملات: thread و cloth و material. ستتيح لك هذه الدالة حساب وزن المواد المعبأة، ويمكننا تحسين هذه العملية بشكل أكبر عن طريق تمريرها من خلال دالة جزئية.

def weight(thread, cloth, material): return 2 * thread + 5 * cloth + material * 10 package = partial(weight, 4, 2)

أنشئ دالة جزئية باسم package. يتم إعدادها بطريقة مشابهة لدوال lambda. استخدم partial() لتعبئة الدالة وإضافة اسم الدالة بالإضافة إلى القيم الثابتة للمعاملات التي ترغب في تعيينها.

أي معاملات في الدالة الأصلية لا تقوم بتعيينها ستصبح المعاملات التي يجب تعيينها بواسطة الدالة الجزئية. في حالة الدالة الجزئية package()، يكون المعامل هو material.

اتجه إلى علامات X الداكنة أمام الصناديق لالتقاط مواد التعبئة. على علامة X على السجادة الصفراء، استخدم دالة collect() للحصول على "thread"، وامشِ إلى علامة X على السجادة البنفسجية واستخدم دالة collect() للحصول على "cloth". ستُستخدم هذه العناصر لتعبئة المواد.

اعبر الرصيف والتقط جميع مواد البناء، وهي: bricks، planks، red_bricks و wood. بمجرد جمعها، أضف العدد الذي جمعتها من كل مادة إلى متغير يحمل اسم المادة، على سبيل المثال: bricks = 3.

بعد ذلك، اتجه إلى علامات X الفاتحة أمام الصناديق واحسب وزن كل مادة بناء قبل تخزينها. استخدم دالة speak() مع الدالة الجزئية package() لحساب الوزن. استخدم متغيرات المواد كمعاملات لدالة package()، على سبيل المثال:

player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))

ثم استخدم دالة place() لتخزين المادة داخل الصناديق، وذلك باستخدام دالة package() أيضاً، كما في المثال أعلاه.

على علامة X الفاتحة مع السجادة red، قم بوزن وتخزين bricks. على علامة X الفاتحة مع السجادة blue، قم بوزن وتخزين planks. على علامة X الفاتحة مع السجادة orange، قم بوزن وتخزين red_bricks. على علامة X الفاتحة مع السجادة green، قم بوزن وتخزين wood. قم بتخزين ووزن المواد الأربعة (4) جميعها في الصناديق الصحيحة لاستكمال المستوى.

كتاب الكود