2014-11-02 106 views
0
""" 

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) 

右,中註釋掉的代碼,發現最裏面的功能不被調用但隨後給出了在第2遞歸的錯誤可能是因爲它不採取「秒'作爲一個論點..有人可以爲我清除這個請。

+1

這不是正好在你的代碼的結構,但可以接受並返回一個元組'( newInp,sec)'from來匹配函數簽名newInp,並且嵌套調用將是'permNums(permNums(permNums(('word','word'))))[0]'。 – markw 2014-11-02 15:58:01

回答

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') 
相關問題