高级 Python 开发课程
第 章
>
第 级
高级列表
排序集合
目标
通过使用 Sets 来排序和组合食材,组织并烹制一顿饭。
开始准备食物是个不错的主意,冰箱里有一些包装好的食材以及一些可以用来调味的香草。所有材料都存储在列表中,因此使用 Sets 来整合物品,从而让烹饪发挥到极致,会是个好办法。
有三个(3)列表常量,其中两个(2)是肉类,分别命名为 pack1 和 pack2,另一个(1)是烹饪材料,命名为 ingredients。走向橙色地毯上标有深色 X 的位置,面向冰箱,使用 collect() 函数从冰箱中获取 pack1 和 pack2,例如: player.collect(pack1).
获取肉类后,走向标有浅色 X 的位置并面向切菜板,在这里我们将使用之前收集到的两个列表常量,通过 speak() 函数来验证包装内的内容。接下来,我们将像上一关那样使用 Sets 来整合这些物品。创建两个名为 set1 和 set2 的 Sets,并使用 set() 函数将 pack1 和 pack2 分别赋值给它们,例如: set1 = set(pack1).
一旦列表被整合为 Sets,就该对这些物品进行排序,并将它们划分为更小的 Sets 以便使用。
实现这一目标的第一种方法称为 systemic_difference,它允许我们分离出两个 Sets 中不共享的物品。创建一个名为 unique 的 Set,使用这两个 Sets 通过 systemic_difference 对比来识别独特的物品,例如: unique = set1.symmetric_difference(set2)。使用 speak() 方法对你创建的 Set 进行确认,以核实其内容。
接下来,通过创建一个名为 shared 的 Set 来继续排序,并使用上一关学到的 intersection 方法确认在两个 Sets 中都存在的物品。使用这两个 Sets 进行比较并识别共有的物品,例如: shared = set1.intersection(set2)。使用 speak() 方法对你创建的 Set 进行确认,以核实其内容。
最后,使用名为 difference 的方法,它可以让我们分离出仅存在于一个 Set 中而不在另一个中的物品。创建两个(2) Sets,分别命名为 meat1 和 meat2,使用这两个原始 Sets 通过 difference 方法来比较并识别出物品,例如: meat1 = set1.difference(set2) 和 meat2 = set2.difference(set1)。使用 speak() 方法对你创建的两个肉类 Sets 进行确认,以核实它们各自的内容。
这样肉类就已整理完毕,走向蓝色地毯上方标有深色 X 的位置,面向冰箱,使用 place() 函数来存放你创建的 shared Set,例如: player.place(shared)。这样你就把不需要烹饪的食材收了起来。
走向金色 X 标记的位置,面向橱柜,使用 collect() 函数获取最后一个列表常量 ingredients,并使用 speak() 函数确认其中的内容。将 ingredients 中的元素传递到一个名为 set3 的新 Set 中。现在你已经获得了所有的食材,使用 union 方法创建两个 Sets,分别命名为 meal1 和 meal2,将所有烹饪所需的元素组合在一起。
对于 meal1,将 set3 与 meat1 组合在一起,例如:meal1 = set3.union(meat1)。走向紫色地毯上标有深色 X 的位置,使用 meal1 Set 调用 speak() 函数确认内容,并调用 place() 函数将食材放入锅中以烹制这道菜。
对于 meal2,操作相同,但使用 set3 与 meat2 的 union 方法。走向黄色地毯上标有深色 X 的位置并面向锅,使用 speak() 和 place() 函数对 meal2 进行操作,以完成本关。