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