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

قوائم متقدمة
تراكيب القوائم

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

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

Guide

الهدف

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

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

لإنجاز ذلك، تحتاج إلى تحديد العناصر الموجودة داخل كل كيس؛ هناك ثلاث (3) ثوابت لقوائم تحمل معلومات كل كيس، وهي: left_sack، middle_sack، right_sack. تتوافق هذه الثوابت مع الأكياس الموجودة في الحقل في المواقع الموضحة بأسمائها.

اتجه إلى علامات X المضيئة أمام كل كيس واستخدم دالة speak() لتحديد محتويات كل كيس باستخدام الثوابت، على سبيل المثال: player.speak(left_sack). بمجرد تحديد المحتويات داخل كل كيس، حدد العناصر التي بحاجة إلى الإزالة مثل الخضروات التي تحتوي على: "Bad"، "Spoiled" أو "Rotten" في اسمها.

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

من بين الثوابت الثلاثة للقوائم: left_sack، middle_sack، right_sack، قم بإنشاء ثلاث قوائم جديدة مسماة: potatoes، onions و garlic لا تحتوي على العناصر غير المرغوب فيها في الأكياس. يسمح لك فهم القوائم بإنشاء قوائم جديدة دون كتابة الكثير من التعليمات البرمجية، على سبيل المثال:

# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]

في المثال أعلاه، يتم إنشاء القائمة المسماة potatoes من القائمة المسماة sack بحيث تحتوي فقط على ["Potatoes", "Sweet Potatoes"] مع استبعاد عنصر "Spoiled Potatoes". يتم تحقيق ذلك عن طريق إنشاء حلقة for متكاملة، في هذه الحالة باستخدام x كمؤشر للتنقل عبر القائمة وعبارات for / in لتحديد واستبعاد العنصر غير المرغوب فيه، وهو أي سلسلة تحتوي على الكلمة "Spoiled".

لمراجعة ذلك، تحقق مما إذا كانت ثوابت القائمة تحتوي على الكلمة "Bad"، "Spoiled" أو "Rotten" باستخدام دالة speak()، ثم أنشئ القوائم potatoes، onions و garlic باستخدام فهم القوائم لإزالة العناصر غير المرغوب فيها التي وجدتها في كل قائمة.

بمجرد إنشاء هذه القوائم، اتجه إلى كل من العلامات الذهبية (3) على شكل X أمام الصناديق التي تحمل لافتات الخضروات، وقم بوضع القوائم، باستخدام دالة place(), في الصناديق المناسبة لإكمال المستوى. يتم تحديد المواقع بواسطة اللافتات، بحيث يكون onions في الصندوق الأيسر، potatoes في الصندوق الأوسط و garlic في الصندوق الأيسر.

كتاب الكود