函数scoreList(Rack)获取一个字母列表。你也会得到一个全局变量字典:["a", "am", "at", "apple", "bat", "bar", "babble", "can", "foo", "spam", "spammy", "zzyzva"]
。给定一个字典和一个字母列表,找到所有可以使用字母创建的单词
使用字母列表查找可以使用词典中的字母做出的所有可能的单词。对于每个可以制作的单词,还可以使用scrabbleScore查找该单词的分数。
scrabbleScore =
[ ["a", 1], ["b", 3], ["c", 3], ["d", 2], ["e", 1],
["f", 4], ["g", 2], ["h", 4], ["i", 1], ["j", 8],
["k", 5], ["l", 1], ["m", 3], ["n", 1], ["o", 1], ["p", 3],
["q", 10], ["r", 1], ["s", 1], ["t", 1], ["u", 1], ["v", 4],
["w", 4], ["x", 8], ["y", 4], ["z", 10] ]
我可以使用由列表解析(地图,过滤器,减少等)的表达,if语句和for循环,但只有当他们在一个列表的上下文理解。
实施例:
>>> scoreList(["a", "s", "m", "t", "p"])
[['a', 1], ['am', 4], ['at', 2], ['spam', 8]]
>>> scoreList(["a", "s", "m", "o", "f", "o"])
[['a', 1], ['am', 4], ['foo', 6]]
在它们出现无关紧要的顺序。它也必须保持一个清单而不是一个词典。会喜欢这个问题的一些帮助,或者如果你能让我更好地理解如何在这个问题中使用地图或过滤器。
mycode的:
def scoreList(Rack):
test = [x for x in Dictionary if all(y in Rack for y in x)]
return test
输出:
>>> scoreList(["a", "s", "m", "t", "p"])
['a', 'am', 'at', 'spam']
正如你可以看到我能找到的话,但没有得分。我怎么能不使用字典找到它?
您示例答案中的数字是什么? –
不幸的是,我想我可能会说我的问题不对。你输入你自己的字母,任何字母的列表。字典中可以用字母组成的任何单词都会与其分数一起输出。我忘了说它必须保持一个列表。很抱歉对于这个误会。 –