2016-10-02 73 views
0

我需要編寫一個帶有兩個函數的Python腳本。一個功能是將(p)的後代孩子還給Take(p)並返回(p)的祖先。recurDescents(p)和recurAncestors(p)

我做了一個腳本,返回(p)的子項。

parent = [("Homer","Bart"),("Homer","Lisa"),("Abe","Homer"),("Bart","Jim"),("Jim","Kim"),("Lisa","Lora")] 

def child(p): #definition of child function() 
    result = []  
    for x in parent: 
     if x[0] == p: 
      print(x[1]) 
      result.append(x[1]) 


     return result 

def grandChild (p): 
    result = [] 
    children = child(p) 
    for x in children: 
     for y in parent: 
      if x == y[0]: 
       result.append(y(1)) 
      return result 



p = "Homer" 
children = child(p) # my caller question 
print(p, " has child ", children) 

我只是不知道該怎麼做。

+0

你return語句縮進錯誤。把它們放在for循環之外。 –

回答

0

您的退貨聲明位於錯誤的地方。他們應該是環外:

def f(): 
    for loop 
     stuff 
    return ... 

如果你想有一個稍微更簡潔的版本:

#find children of parent p 
[child for parent, child in list_of_parents if parent == p] 
#find parent of child c 
[parent for parent, child in list_of_parents if child == c] 
+0

它返回答案:Python 3.5.2 | Continuum Analytics,Inc. | (默認,2016年7月5日,11:41:13)在Windows(64位)上。 這是集成了TK事件循環的Pyzo解釋器。 鍵入'help'尋求幫助,輸入'?'查看* magic *命令列表。 跑步腳本: Bart 荷馬有孩子['巴特']:爲原始腳本。我無法在任何地方在線找到recurDescents(p)和recurAncestors(p)的良好定義。 –

相關問題