集合差集
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 35 课,共 78 课。
两个集合的差集包含第一个集合中有、第二个集合中没有的成员。遍历第一个集合,保留第二个集合中没有的成员:
var needed := {"rope": true, "torch": true, "map": true}
var packed := {"torch": true, "apple": true}
var missing := {}
for item in needed:
if not packed.has(item):
missing[item] = true
print(missing.keys()) # ["rope", "map"]集合的顺序很重要。packed 和 needed 的差集是 ["apple"]:你打包了但不需要的内容。
这两个差集合起来就是对称差:只在其中一个集合中的元素。这里是 rope、map 和 apple。
为了检查是否有内容缺失,has_all() 会接收一个数组,并在数组中的每个元素都是字典的键时返回 true:
print(packed.has_all(needed.keys())) # false:缺少绳子和地图挑战
简单旅行前,你会比较需要带的东西和已经打包的东西。程序会读取两行内容,分别是需要的物品和已经打包的物品,物品之间用空格分隔,起始代码会构建集合 needed 和 packed。
打印两行,集合成员之间用 , 连接:
Missing:后面跟上需要但没有打包的物品Extra:后面跟上已经打包但不需要的物品
按照循环遍历的集合中的顺序排列。列表为空时,打印 none。对于以下输入:
rope torch map
torch apple输出为:
Missing: rope, map
Extra: apple亲手试试
extends Node
func _ready():
var needed := {}
for item in OS.read_string_from_stdin().split(" ", false):
needed[item] = true
var packed := {}
for item in OS.read_string_from_stdin().split(" ", false):
packed[item] = true
# 求出两个差集
# 输出结果
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器