2017-06-01 172 views
1

我一直在Udacity上課,然後進入我的最終項目提交。Python循環問題

我不得不通過解析一個字符串,它是創建一個數據結構: - 。

EXAMPLE_INPUT =「約翰連接到科比,黛布拉,沃爾特\約翰喜歡 播放影片:遊戲,科比喜歡 玩城市審計:財政困境,超級蘑菇人。\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \梅賽德斯喜歡 發揮柯基斯島傳奇,海盜在爪哇島,海馬 冒險。\橄欖是連接到約翰,奧爾謊言。\橄欖喜歡玩 柯基斯傳說,星際艦隊司令。\ Debra連接到 Walter,Levi,Jennie,Robin。\ Debra喜歡玩七個Schemers, 爪哇島的盜賊,矮人和劍。\ Walter沃爾特喜歡玩海馬冒險,忍者 倉鼠,超級蘑菇人。\李維連接到奧利,約翰, 沃爾特。\李維喜歡玩柯基斯傳奇,七個策士,City 審計員:財政困境。\ Ollie與斯坦福汽車公司聯繫, Freda,Bryant。\ Ollie奧利喜歡玩武器召喚,矮人和劍, The Movie:The Game。\ Jennie與Levi,John, Fredina, 羅賓。珍妮喜歡玩超級蘑菇人,迪nosaur晚餐,呼叫武器 。\羅賓連接到奧利。\羅賓喜歡玩的 武器,矮人和劍呼叫。\福瑞達連接到橄欖,約翰,黛布拉。\ 福瑞達喜歡玩星際艦隊指揮官,忍者倉鼠,海馬 冒險。「

其中我成功地做了和我的輸出數據結構出來如下: -

[ '約翰',[ '科比', '德布拉', '瓦爾特'],['電影:'The Game',' Corgi','Dinosaur Diner']],['Bryant',['Olive','Ollie', 'Freda','Mercedes'],['City Comptroller:The財政困境','超級 蘑菇人]],['梅賽德斯',['沃爾特','羅賓','科比'],[' 柯基傳奇','爪哇海盜','海馬冒險']], ['Olive',['John','Ollie'],['柯基傳奇','Starf ['Seven' Schemers','爪哇島的海盜','矮人和劍']],['Debra',['Walter','Levi','Jennie','Robin'] ], ['Walter',['John','Levi','Bryant'],['Seahorse Adventures','Ninja 倉鼠','超級蘑菇人]],['Levi',['Ollie ','''','''','''','''','''',''''',''''','''''',''''''','''''''',''''''''''''' ,''珍妮',['Levi','約翰','弗雷達',''''''''),'羅賓'],['超級 蘑菇俠','恐龍餐廳','武器的召喚]],['Robin', ['Ollie'],['Call of Arms','Dwarves and Swords]] ],['Freda', [「橄欖」,「約翰」,「德布拉」],[「星際艦隊司令」,「忍者倉鼠」, 「海馬歷險記」]]]

的問題是,我需要定義一個過程,它查找我做過的連接的連接,但無法正常運行。嵌套循環只運行一次迭代。我不知道爲什麼。我嘗試通過正常循環和使用範圍函數。我也使用while循環,但沒有任何工作。這是我下面的代碼: -

def get_secondary_connections(network, user): 
     found=False 
     for entry in network: 
      if entry[0]==user: 
       connections=entry[1] 
       found=True 
     connection_of_connections=[] 
     i=0 
     while i <len(connections): 
      for entry in network: 
       if connections[i] in entry[0]: 
        connection_of_connections=connection_of_connections+entry[1] 
i=i+1 
     if found == True: 
      return connection_of_connections 
     else: 
      return None 
    print get_secondary_connections(net, 'John') 
+0

您可否對您的輸出數據結構進行美化?看到這些結構是如何嵌套而沒有換行符和縮進是一件很痛苦的事情。你可以把它粘貼到一個在線的json格式器中。 – ashbygeek

+0

另外,你的'我=我+ 1'以某種方式失去了縮進。 – ashbygeek

+0

而不是列表,爲什麼不使用字典? – MooingRawr

回答

0

它並不完全來自你的代碼的縮進你打算如何做搜索清楚,但是我測試了你的數據如下修改後的版本,它似乎工作:

def get_secondary_connections(network, user): 
    connection_of_connections=[]  
    for entry in network: 
     if entry[0]==user: 
      connections=entry[1] 
      i=0 
      while i < len(connections): 
       connection = connections[i] 
       for other_entry in network: 
        if other_entry[0] == connection: 
         for item in other_entry[1]: 
          if (item != user) and (not item in connection_of_connections): 
           connection_of_connections.append(item) 
       i=i+1 
    if len(connection_of_connections) > 0: 
     return connection_of_connections 
    else: 
     return None 

希望這會有幫助。

+0

你是一個救世主的人。萬分感謝。順便說一句,我只是好奇,爲什麼,因爲我希望它是我的代碼沒有運行。我可能會學到一些我不知道的東西。請教。 –