Продвинутый курс разработки на Python
Глава
>
Уровень
Продвинутые списки
Изменение матрицы
Цель
Соберите и разместите винные бутылки на винной полке, изменяя Матрицу.
В погребе необходимо разместить несколько винных бутылок. Однако на полке уже хранятся некоторые бутылки, и их нужно разместить в определённых местах, чтобы убрать их.
Бутылки на полке хранятся в виде Матрицы, типа Вложенного списка. Матрицы – это вложенные списки, где каждый элемент является списком одинаковой длины, что создаёт некую сетку, разделённую на строки и столбцы. Например:
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).