หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ
รายการขั้นสูง
การปรับเปลี่ยนเมทริกซ์
วัตถุประสงค์
รวบรวมและเก็บขวดไวน์บนชั้นไวน์โดยการปรับเปลี่ยน Matrix
มีขวดไวน์หลายขวดที่ต้องถูกจัดเก็บในชั้นไวน์ อย่างไรก็ตาม มีขวดหลายขวดที่ถูกจัดเก็บอยู่ในชั้นแล้ว สิ่งของเหล่านี้จำเป็นต้องถูกวางในตำแหน่งที่เฉพาะเจาะจงเพื่อที่จะนำไปเก็บ
ขวดไวน์บนชั้นถูกจัดเก็บใน Matrix ซึ่งเป็นชนิดของ Nested List การที่ Matrixes จะเป็น Nested List ที่แต่ละรายการมีความยาวเท่าเดิม ทำให้เกิดตารางที่แบ่งออกเป็นแถวและคอลัมน์ ตัวอย่างเช่น:
matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0] ]
ในโค้ดข้างต้น เรามี Matrix ที่มีสาม (3) คอลัมน์และสี่ (4) แถว ในการเข้าถึงรายการภายใน Matrix สิ่งที่ต้องทำคือระบุแถวและคอลัมน์ที่รายการนั้นตั้งอยู่คล้ายกับการเข้าถึงรายการบนลิสต์ปกติแต่มีสองรายการแทนหนึ่งรายการ ตัวอย่างเช่น จากโค้ดข้างต้น: 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 สีทองและหันหน้าไปยังชั้นไวน์
บนโปรแกรมแก้ไขโค้ด จะมี Matrix ชื่อ wine_rack ปรากฏขึ้น ให้ค้นหารายการใน Matrix ที่มีค่าเป็น 0 และเพิ่มขวดที่คุณเก็บได้เข้าไปในค่านั้น Matrix จะมีสีของขวดที่ต้องเพิ่มเติมระบุไว้ในแต่ละแถว ในการเพิ่มรายการใหม่ใน Matrix ให้พิมพ์แถวและคอลัมน์ที่คุณต้องการให้ค่าแทรกเข้าไป เช่น: wine_rack[0][1] = purple_bottle
จำไว้ว่า ตำแหน่งในลิสต์ทั้งหมดเริ่มที่ 0 เมื่อเพิ่มรายการทั้งหมดใน Matrix และเมื่อตารางสมบูรณ์แล้ว ให้ใช้ฟังก์ชัน place() ตามด้วยฟังก์ชัน speak() บนเครื่องหมาย X สีทองพร้อมกับชื่อของ Matrix เพื่อตรวจสอบค่าของมันและทำให้ระดับสำเร็จ ดังนี้: player.place(wine_rack) , player.speak(wine_rack)