"""
def permNums(inp,sec):
newInp = []
for i in inp:
for j in sec:
if j not in i: newInp.append( i+j ) #I put the print after this line
return newInp
b = permNums(permNums(permNums(inp='word',sec='word')))
print b
"""
def permNums(inp):
newInp = []
for i in inp:
for j in 'word':
if j not in i: newInp.append( i+j )
return newInp
b = permNums(permNums(permNums(inp='word')))
print b
我认为已经注释掉的代码和没有注释的代码应该是等价的。注释掉的代码引发了一个错误,说我只给了1个参数而不是2.我在哪里错了?
我尝试在
之后立即放置打印功能 if j not in i: newInp.append( i+j )
,在注释掉的代码中,注意到最里面的函数被调用,但是在第二次递归时给出了一个错误,可能是因为它没有采取' sec'作为一个论点..有人可以帮我解决这个问题。
答案 0 :(得分:3)
问题来自第二次通话。让我来说明一下。当返回内部调用的结果时,Python必须执行以下操作:
permNums(result_of_previous_call) # sec won't implicitly carry through.
这显然只是一个论点。因此,要修复已注释掉的注释,需要为每个调用提供额外的sec
参数:
b = permNums(permNums(permNums(inp='word', sec='word'), sec='word'), sec='word')