【发布时间】:2018-12-14 07:19:00
【问题描述】:
首先我要说这是我正在处理的代码挑战,其参数如下。
所以,首先,编写一个名为 Covers 的函数,它接受一个参数,即一组主题。让函数返回来自 COURSES 的课程列表,其中提供的集合和课程的值(也是一个集合)重叠。例如,cover({"Python"}) 将返回 ["Python Basics"]。
这是我从中提取的包含课程主题嵌套集的字典。
COURSES = {
"Python Basics": {"Python", "functions", "variables",
"booleans", "integers", "floats",
"arrays", "strings", "exceptions",
"conditions", "input", "loops"},
"Java Basics": {"Java", "strings", "variables",
"input", "exceptions", "integers",
"booleans", "loops"},
"PHP Basics": {"PHP", "variables", "conditions",
"integers", "floats", "strings",
"booleans", "HTML"},
"Ruby Basics": {"Ruby", "strings", "floats",
"integers", "conditions",
"functions", "input"}}
现在,搜索字典的集合是对 for 循环的一种非常严格的向前使用,但挑战听起来像是要我创建一个新的课程名称集合,其主题与参数(的)输入相匹配,并输出结果作为一个列表。
def covers(topics):
hold_set = set()
for key in COURSES.keys():
if topics in COURSES[key]:
result = key
hold_set.add(result)
else:
continue
conversion = list(hold_set)
return conversion
现在我的第一个问题是接受可变数量的参数,我对 *args / **kwargs 不是很熟悉,所以我在这里使用它们的尝试大多只是导致 print 函数给了我空列表。另一个是创建一个额外的不必要的集合来与在字典中搜索子集后创建的新集合进行比较,这似乎是多余的,因为 hold_set 已经包含名称并将它们与我假设的 .intersection() 进行比较,然后再转换列表中的结果只是通过更多的工作来获得相同的结果。
但是我离题了,现在我假设这里的主要问题是函数无法接受关于主题搜索参数的可变数量的参数(因为在提交挑战时,它说“没有从covers."),所以如果有人能阐明我如何使这成为可能,那将不胜感激,因为几天后我的大脑开始糊涂,我开始阅读有关计算机科学其他领域的文章解压。
【问题讨论】:
标签: python-3.x dictionary set args keyword-argument