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

المولّدات
إنشاء مولد

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

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

Guide

الهدف

ملء الزجاجات بالحليب عن طريق ضخ خزانات الحليب باستخدام المولدات.

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

هناك خزانان (2) يحتويان على الحليب يحتاجان إلى ضخ حليبهما وتعبئته في زجاجات. تحتوي كل آلة على حجيرات تخزن الحليب، والتي يتم تمثيلها من خلال الثوابت القائمة المسماة: tank_a و tank_b. بالإضافة إلى ذلك، يميل كل خزان إلى وجود فائض يمكن جمعه.

المولدات تتبع نفس قواعد الدوال لكنها تستخدم yield بدلاً من return لإخراجها. قم بإعداد مولد اسمه fill() واضبطه مع المعامل list، هذا الموقع الذي ستدخل فيه الثوابت المذكورة في الفقرة السابقة.

def fill(list): for x in range(3): yield list[x] yield 5

المولد يقرأ البيانات من الحقول الثلاثة (3) في ثوابت القوائم، والتي يتم تمثيلها بالحجيرات في الآلة، ويضيف فائضًا في النهاية وهو خمسة (5).

اجمع جسم السلة في الحقل للحصول على الزجاجات الضرورية للتعبئة واذهب إلى العلامتين (X) لجمع الحليب باستخدام حلقة for .

بفضل جملة yield، يمكن قراءة القيم الناتجة من المولد مباشرة من خلال حلقة for. قم بإعداد واحدة تستخدم دالة collect() للحصول على "الحليب" من الآلة. تابع ذلك باستخدام speak() للتحقق من مقدار الحليب الذي تم تخزينه في كل زجاجة. على سبيل المثال:

for bottles in fill(tank_a): player.collect("milk") player.speak("%d pints of milk collected" % (bottles))

اكتب واستخدم هذه الحلقة for على كلا علامتي X، على العلامة X الفاتحة استخدم المعامل tank_a وعلى العلامة X الداكنة استخدم المعامل tank_b لإكمال المستوى.

كتاب الكود