Продвинутый курс разработки на Python
Глава
>
Уровень
Продвинутые списки
Сортировка множеств
Цель
Организуйте и приготовьте блюда, используя множества для сортировки и составления ингредиентов.
Хорошей идеей будет начать готовить еду: в холодильнике находятся несколько ингредиентов, завернутых в упаковку, а также некоторые травы, которые можно использовать для придания вкуса блюду. Все материалы хранятся в списках, поэтому разумно использовать множества для объединения элементов и максимального использования возможностей вашей кулинарии.
Существует три (3) константы списка: две (2) из них — мясо, с именами: pack1 и pack2, и одна (1) — кулинарные материалы, с именем ingredients. Подойдите к темной метке с крестиком на оранжевом ковре и повернитесь к холодильнику, используйте функцию collect(), чтобы забрать pack1 и pack2 из холодильника, например: player.collect(pack1).
После того, как мясо собрано, подойдите к светлой метке с крестиком и повернитесь к разделочной доске; здесь мы проверим содержимое упаковок, используя функцию speak() с обеими константами списка, которые вы собрали. Отсюда мы будем консолидировать элементы с использованием множеств, как и на предыдущем уровне. Создайте два множества с именами set1 и set2 и, используя функцию set(), присвойте им pack1 и pack2, например: set1 = set(pack1).
После того как списки объединены в множества, наступает время сортировки и разделения элементов на более мелкие множества для удобства.
Первый метод для этого называется systemic_difference, он позволит нам отделить элементы, которые не являются общими для каждого множества. Создайте множество с именем unique и используйте два множества для сравнения и выявления уникальных элементов с помощью systemic_difference, например так: unique = set1.symmetric_difference(set2). Используйте метод speak() с созданным множеством, чтобы подтвердить его содержимое.
Продолжите сортировку, создав множество с именем shared и применив метод intersection, изученный на предыдущем уровне, для определения элементов, присутствующих в обоих множествах. Используйте два множества для сравнения и выявления элементов, например так: shared = set1.intersection(set2). Используйте метод speak() с созданным множеством, чтобы подтвердить его содержимое.
Наконец, используйте метод под названием difference, который позволит нам отделить элементы, встречающиеся только в одном множестве, а не в другом. Создайте два (2) множества с именами meat1 и meat2, и используйте два исходных множества для сравнения и определения элементов с помощью difference, например так: meat1 = set1.difference(set2) и meat2 = set2.difference(set1). Используйте метод speak() с обоими созданными мясными множествами, чтобы подтвердить содержимое каждого из них.
После того как мясо отсортировано, подойдите к темной метке с крестиком над синим ковром, повернитесь к холодильнику и используйте функцию place(), чтобы убрать созданное множество shared, например так: player.place(shared). Таким образом, вы уберете ингредиенты, которые не будете использовать для готовки.
Подойдите к золотой метке с крестиком, повернитесь к шкафу и используйте функцию collect(), чтобы забрать последнюю константу списка с именем ingredients, а затем используйте функцию speak(), чтобы подтвердить его содержимое. Перенесите элементы из ingredients в новое множество с именем set3. Теперь, когда у вас есть все ингредиенты, создайте два множества с именами meal1 и meal2, используя метод union для объединения всех необходимых элементов для приготовления.
Для meal1 объедините set3 и meat1, например так: meal1 = set3.union(meat1). Подойдите к темной метке с крестиком на пурпурном ковре и, используя множество meal1, используйте функцию speak() для подтверждения содержимого, а затем функцию place(), чтобы приготовить блюдо в горшке.
Для meal2 сделайте то же самое, но вместо этого используйте метод union с set3 и meat2. Подойдите к темной метке с крестиком на желтом ковре и повернитесь к горшку, используйте функции speak() и place() с meal2, чтобы завершить уровень.