دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
غير متزامن/انتظار
قراءة الرسائل
الهدف
تحقق من أن أرقام العناصر في مخزن النبيذ صحيحة باستخدام دالة read() وقم بجمع المخزون المتبقي.
يمتلك مخزن النبيذ عدة صناديق تحتوي على زجاجات النبيذ، وسيتم نقلها إلى الطابق العلوي للتوزيع. في غرفة التخزين، ستُوجد جداول تحتوي على مذكرات بالطلبات، وبجانبها ستكون صناديق تحتوي على الزجاجات. عليك التحقق من أن عدد الزجاجات في كل صندوق يتطابق مع المذكرات وإضافة أي عناصر مفقودة.
أولاً، اجمع الزجاجات المفككة الموجودة في غرفة النبيذ حتى تكون جاهزة لتعويض أي عناصر مفقودة من الطلبات. هناك ثلاثة (3) أنواع من زجاجات النبيذ، وعند جمعها، قم بإنشاء متغيرات لها على النحو التالي: empty_bottles , purple_bottles , yellow_bottles وخزن العدد الذي جمعتها لكل منها في المتغيرات.
بمجرد حصولك على جميع الزجاجات في المنطقة، توجه إلى علامات X الخفيفة داخل غرفة التخزين ووجه نحو المذكرات. استخدم الدالة read() لقراءة معلومات الطلب الموجودة على المذكرة عن طريق تفعيل نافذة منبثقة. على غرار دالة write()، فإن الدالة read() هي دالة غير متزامنة (async) وتتطلب استخدام await قبل كتابة الكود، مثل هذا: await player.read().
المذكرات مصنفة حسب اللون تبعاً للسجاد تحتها، وبمجرد اطلاعك على أرقام الطلب، توجه إلى علامات X الداكنة أمام الصناديق المصنفة حسب اللون واستخدم الدالة speak() للتحقق من محتويات كل صندوق. هناك ثلاث (3) ثوابت تتوافق مع كل من الصناديق: green_crate , blue_crate و red_crate.
تحقق من أن محتويات كل صندوق تتطابق مع ما هو مذكور في المذكرة الخاصة بسجاد اللون المطابق. إذا كانت هناك عناصر مفقودة في الصناديق كما هو مبين في المذكرة، أضفها إلى الصناديق المعنية. أنشئ متغيرات: empty_missing , purple_missing و yellow_missing وأضف عدد كل منها المفقود إلى محتويات الصندوق.
بمجرد تعيين المتغيرات، استخدم الدالة place() لإضافة الزجاجات المفقودة إلى الصناديق، على سبيل المثال: player.place(empty_missing). بعد تعيين جميع العناصر، توجه إلى علامة X الذهبية واستخدم الدالة write() لكتابة مجموع كل الزجاجات المتبقية التي لم يتم تخزينها.
سيتم كتابة مسودة الرسالة في محرر الشيفرة، قم بتعيين الكميات الصحيحة من كل من الزجاجات المتبقية التي لم تُخزَّن عن طريق طرح المتغيرين الذين أنشأتهما، على سبيل المثال: empty_bottles-empty_missing. بمجرد جمع كل العناصر المتبقية، تكون قد أكملت المستوى.