קורס פיתוח מתקדם בפייתון
פרק
>
רמה
רשימות מתקדמות
שינוי מטריצה
מטרה
אסוף ואחסן בקבוקי יין על מתלה היין על ידי שינוי מטריצה.
ישנם מספר בקבוקי יין שיש לאחסן על מתלה היין. עם זאת, מספר בקבוקים כבר מאוחסנים במתלה, ויש למקם את הפריטים במיקומים ספציפיים כדי לסדרם.
הבקבוקים במתלה מאוחסנים בתוך מטריצה, סוג של רשימה מקוננת. מטריצות הן רשימות מקוננות שבהן כל פריט הוא רשימה עם אותו אורך בדיוק, מה שיוצר מעין רשת שבה הפריטים מחולקים לשורות ועמודות. לדוגמה:
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).