دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
وحدات الرياضيات
وحدة العوامل
الهدف
التحقق وتخصيص أوامر مواد بناء الأراضي الجديدة باستخدام وحدة العمليات.
الطابق العلوي من الملحق يحتوي على بعض المكاتب التي تحتفظ بسجلات المخزون والأوامر لمواد البناء اللازمة لتطوير الأرض الجديدة. هناك مجموعة متنوعة من الأدوات المختلفة التي يمكن استخدامها للتحقق وحساب المواد بحيث يمكن استخدامها في البناء، إلى جانب وحدة الرياضيات والإحصاء يمكننا استخدام وحدة العمليات.
يمكن استخدام هذه الوحدة، import operator، لتبسيط حسابات العمليات وتغليفها في دوال بشكل مريح. يمكنك استخدام هذه الدوال لكل من التحسين وإنتاج القيم دون الحاجة إلى إنشاء كائن لتخزين القيم الخاصة بالحسابات.
operators.eq(): تأخذ وسيطين، وتتحقق مما إذا كان الوسيطان متساويين.operators.lt(): تأخذ وسيطين، وتتحقق مما إذا كان الوسيط الأول أقل من الوسيط الثاني.operators.gt(): تأخذ وسيطين، وتتحقق مما إذا كان الوسيط الأول أكبر من الوسيط الثاني.operators.floordiv(): تأخذ وسيطين، تقسم الوسيط الأول على الوسيط الثاني وتطبق ما يعادلmath.floor()، حيث يتم تقريب النتيجة إلى الأسفل.operators.mod(): تأخذ وسيطين، وتعيد باقي قسمة الوسيطين.operators.contains(): تُستخدم مع قائمة، تأخذ وسيطين؛ الأول هو قائمة، والثاني قيمة ترغب بالتحقق مما إذا كانت موجودة داخل القائمة. تُعيد:trueأوfalseاعتمادًا على ما إذا كانت القيمة موجودة أم لا.operators.concat(): تأخذ وسيطين قائميين، وتدمج القائمتين معًا باستخدام دالة واحدة نظيفة، ويمكن أن تكون أسرع من الطرق الأخرى.operators.countOf(): تأخذ وسيطين، قائمة وقيمة للتحقق من عدد مرات تواجد تلك القيمة في القائمة. تُعيد عدد مرات ظهور القيمة.
لبدء العملية، توجه إلى علامة X الداكنة فوق السجاد الأحمر، الأزرق والأخضر. هناك ستة (6) ثوابت: red_order، blue_order، green_order، وهي أوامر المواد، و: red_req، blue_req، green_req وهي الكميات المطلوبة للبناء.
على علامة X الداكنة فوق السجاد الأحمر، استخدم الدالة read() للتحقق من الكمية المطلوبة من المواد. أنشئ متغيرًا باسم red_verification واستخدم الدالة operator.eq() مع الثابتين red_order و red_req، كما يلي: red_verification = operator.eq(red_order,red_req). باستخدام الدالة المكتوبة مسبقًا write()، استخدم red_verification لعرض النتيجة.
على علامتي X للأزرق والأخضر، كرر نفس العملية، استخدم الدالة read() وأنشئ المتغيرات: blue_verification و green_verification. بالنسبة للمتغير الأزرق، خزن قيمة operator.lt() باستخدام الثوابت blue_order و blue_req للتحقق مما إذا كان الطلب أقل من المطلوب. بالنسبة للمتغير الأخضر، خزن قيمة operator.gt() باستخدام الثوابت green_order و green_req للتحقق مما إذا كان الطلب أكبر من المواد المطلوبة. استخدم الدوال المكتوبة مسبقًا write() مع دوال التحقق المناسبة للسجاد الملون.
بعد ذلك، توجه إلى علامة X الفاتحة وعلى المكتب استخدم الدالة read() للتحقق من الأوامر التي قد تم تقديمها وهي في الطريق. في سجل الطلبات ستجد قيم ثوابت متغيرة: main_order و sub_order بالإضافة إلى عدد الأقسام التي يجب تقسيم المواد إليها. بعد قراءة سجل الطلبات، أنشئ متغيرًا باسم allocations وخزن فيه قيمة operator.floordiv() لتقسيم قيمة main_order على عدد الأقسام المذكور في السجل، كما يلي: allocations = operator.floordiv(main_order, -add sections-). هذا يقوم بتقسيم الطلب وتقريب النتيجة لأسفل. استخدم الدالة المكتوبة مسبقًا write() مع المتغير allocations لتسجيل النتيجة.
توجه إلى علامة X الذهبية وأنشئ متغيراً باسم remainder، وخزن فيه نتيجة operator.mod() بإضافة كلا الثابتين main_order و sub_order للحصول على باقي قسمة الطلبين. على المكتب، استخدم الدالة المكتوبة مسبقًا write() وأضف المتغير remainder لتسجيل النتيجة.
اتجه إلى علامة X الداكنة فوق السجاد البنفسجي، حيث سنقوم بالتحقق مما إذا كانت أدوات البناء قد تم توصيلها. لدينا ثوابت قائمتيْن، delivery_1 و delivery_2، وسنتحقق مما إذا كانت الأدوات قد تم توصيلها في التوصيل الأول. أنشئ متغيراً باسم tools وخزن فيه نتيجة operator.contains(). للوسيطة الأولى أضف قائمة delivery_1، وللوسيطة الثانية أضف السلسلة “tools”. سيقوم ذلك بالتحقق مما إذا كانت الأدوات موجودة في التوصيل، كما يلي: tools = operator.contains(delivery_1,"tools"). بعد ذلك، على المكتب، استخدم الدالة المكتوبة مسبقًا write() مع المتغير tools لتسجيل ما إذا كانت الأدوات قد تم توصيلها بنجاح.
بعد ذلك، للتحقق من جميع التوصيلات، توجه إلى علامة X الداكنة فوق السجاد الأبيض وأنشئ قائمة باسم materials. استخدمها لتخزين قيمة operator.concat(), مستخدمًا قائمتي delivery_1 و delivery_2 كوسيطات. ما تفعله هذه الدالة هو دمج القائمتين بسرعة في قائمة واحدة. على المكتب، استخدم الدالة المكتوبة مسبقًا write() مع المتغير materials لتدوين كافة المواد التي تم توصيلها بالفعل للبناء.
أخيرًا، توجه إلى علامة X الداكنة فوق السجاد البرتقالي، حيث توجد بعض المتطلبات المسبقة المكتوبة لبدء البناء. واحدة من الملاحظات الرئيسية هي كمية الخشب المطلوبة في البداية بالطن. تحقق من كمية الخشب التي تم توصيلها في كامل التوصيل وأعلن عنها، باستخدام الدالة speak() مع دالة operator.countOf(). للوسيطة الأولى، أدخل القائمة materials التي أنشأتها متبوعة بالسلسلة “wood”. هذا سيرجع عدد مرات ظهور الخشب في قائمة materials. هذا يوضح كيف يمكن استخدام دوال العمليات بشكل مستقل دون الحاجة إلى استخدام كائن لتخزينها، كما يلي: player.speak(operator.countOf(materials,"wood")). هذا سيكمل المستوى.