دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
القوائم المتقدمة
تعديل المصفوفة
الهدف
اجمع وخزن زجاجات النبيذ على رف النبيذ عن طريق تعديل مصفوفة.
هناك عدة زجاجات نبيذ تحتاج إلى تخزينها في رف النبيذ. ومع ذلك، هناك عدة زجاجات مخزنة بالفعل في الرف، لذا يجب وضع العناصر في مواقع محددة لتخزينها.
يتم تخزين الزجاجات على الرف في مصفوفة، وهو نوع من القوائم المتداخلة. المصفوفات هي قوائم متداخلة حيث كل عنصر هو قائمة بنفس الطول تمامًا، مما يخلق نوعًا من الشبكة حيث تنقسم العناصر إلى صفوف وأعمدة. على سبيل المثال:
matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0] ]
في الكود أعلاه لدينا مصفوفة بها ثلاثة (3) أعمدة وأربعة (4) صفوف. للوصول إلى عنصر داخل المصفوفة، كل ما عليك فعله هو تحديد الصف والعمود الذي يقع فيه العنصر، على غرار الطريقة التي تصل بها إلى عناصر القائمة العادية ولكن بإدخالين بدلاً من واحد. على سبيل المثال، بناءً على الكود أعلاه: matrix[0][0] = 1 , matrix[0][1] = 2 , matrix[1][0] = 4 , إلخ.
هناك أربعة (4) أنواع مختلفة من زجاجات النبيذ في القبو، وهي: "purple bottle" , "green bottle" , "blue bottle" , "yellow bottle". اجمع كل الزجاجات في الميدان ليتم تخزينها على الرف.
هناك أيضًا زجاجات مخزنة داخل صناديق، توجه إلى علامة X المضيئة واستخدم الدالة collect() أثناء مواجهتك للصناديق لالتقاط الزجاجات. هناك ثابتاّن يحملان محتويات الصناديق: lower_crate و upper_crate. تتوافق أسماؤهما مع موقعيهما على الخريطة وتُستخدم على النحو التالي: player.collect(lower_crate).
بمجرد جمع جميع الزجاجات، ضع عدد الزجاجات التي جمعتها لكل نوع في متغيرات، وهي: purple_bottle , green_bottle , blue_bottle , yellow_bottle. بعد ذلك، توجه إلى علامة X الذهبية وواجه رف النبيذ.
على محرر الكود، ستظهر مصفوفة باسم wine_rack. ابحث عن العناصر في المصفوفة التي تحمل القيمة 0 وأضف إليها الزجاجات التي جمعتها. ستحتوي المصفوفة على لون الزجاجة التي يجب إضافتها موضحًا في كل صف. لإضافة عنصر جديد إلى المصفوفة، اكتب الصف والعمود الذي تود وضع القيمة فيه، على سبيل المثال: wine_rack[0][1] = purple_bottle.
تذكر أن جميع مواقع القوائم تبدأ من 0، وبمجرد إضافة جميع العناصر إلى المصفوفة واستكمالها، استخدم الدالة place() تليها الدالة speak() على علامة X الذهبية مع اسم المصفوفة للتحقق من قيمتها وإكمال المستوى، كما يلي: player.place(wine_rack) , player.speak(wine_rack).