2017-06-01 155 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

你是一个救世主的人。万分感谢。顺便说一句,我只是好奇,为什么,因为我希望它是我的代码没有运行。我可能会学到一些我不知道的东西。请教。 –