1
我需要创建一个函数来返回两个列表。第一个是包含“found”和“dummy”的字符串列表,指示两个列表中的数字相同的元素。第二个列表包含一定数量的整数,范围由参数“颜色”给出,该参数返回找到某个数字的次数。目前我已经完成了第一个列表的任务,但第二个列表让我很困惑。另外,您必须在流程中使用递归。这里是到目前为止的代码如何在递归期间创建和编辑列表?
def find(code, guess, colors):
if guess == []:
return []
else:
if guess[0] == code[0]:
return ["found"] + find(code[1:], guess[1:], colors)
else:
return ["dummy"] + find(code[1:], guess[1:], colors)
一个可能的结果是这样的:
>>> find([1,2,3],[3,2,1],6)
[[’dummy’, ’found’, ’dummy’], [0, 0, 1, 0, 0, 0]]
能否请您解释一下为什么'[0,0,1,0,0,0]'在你给'find'参数方面? – gboffi 2014-10-28 00:50:20
@jacobieski如果您快乐地玩递归,我想推荐您Friedman&Felleisen的“The Little Schemer”。虽然不是Python书籍。 – gboffi 2014-10-28 01:03:10
您的代码显然需要返回两个列表,但所有三个'return'语句只返回一个列表。所以显然你必须改变第一个像'return [],[]'的东西。对于第二种情况,您可能需要分两步执行操作,比如'a,b = find(code [1:],guess [1:],colors)'' “找到”] + a,[1] + b'。 (你可以这样做,就像通过压缩和解压缩这两个列表一样,但这只是混淆了你的代码,没有很好的理由。) – abarnert 2014-10-28 01:09:14