Python循环问题

时间:2017-06-01 14:21:23

标签: python loops

我一直在Udacity上课,我正在进行最后的项目提交。

我必须通过解析一个字符串来创建数据结构: -

  

example_input =" John与Bryant,Debra,Walter相关。\ John喜欢   玩电影:游戏,柯基犬传说,恐龙晚餐。   科比与Olive,Ollie,Freda,Mercedes有联系。布莱恩特喜欢   玩城市审计员:财政困境,超级蘑菇人。   梅赛德斯与沃尔特,罗宾,布莱恩特相连。梅赛德斯喜欢   在爪哇岛,海岛玩海盗的传奇   冒险。\ Olive与John,Ollie相连。\ Olive喜欢玩   传说中的柯基雅传说,星际舰队指挥官。\黛布拉与之相连   Walter,Levi,Jennie,Robin。\ Debra喜欢玩Seven Schemers,   海盗在爪哇岛,矮人和剑。\沃尔特连接到   John,Levi,Bryant。\ Walter喜欢玩Seahorse Adventures,Ninja   仓鼠,超级蘑菇人。\ Levi与Ollie,John连接,   Walter。\ Levi喜欢玩The Corgi,Seven Schemers,City   审计员:财政困境。\ Ollie与梅赛德斯相连,   Freda,Bryant。\ Ollie喜欢玩Call of Arms,Dwarves和Swords,   电影:游戏。\珍妮与李维,约翰,弗雷达相连,   Robin。\ Jennie喜欢玩Super Mushroom Man,Dinosaur Diner,Call   武器。\罗宾连接到奥利。\罗宾喜欢玩Call of   武器,矮人和剑。\ Freda与Olive,John,Debra相连。   弗雷达喜欢玩Starfleet Commander,Ninja Hamsters,Seahorse   冒险"

我成功完成了我的输出数据结构如下: -

  

[[' John',[' Bryant',' Debra',' Walter'],['电影:游戏',' The   传说Corgi',' Dinosaur Diner'],[' Bryant',' Olive',' Ollie',   ' Freda','梅赛德斯'],'城市审计员:财政困境','超级   蘑菇人'],[' Mercedes',' Walter'' Robin'' Bryant'],[&# 39;该   传说柯基斯','海盗在爪哇岛'海啸冒险'],   [' Olive',[' John',' Ollie'],[' The Corgi',' Starfleet   Commander'],[' Debra',' Walter'' Levi',' Jennie',' Robin& #39;],['七   Schemers','海盗在Java Island',' Dwarves and Swords']],   [' Walter',' John',' Levi',' Bryant'],[' Seahorse Adventures', '忍   Hamsters',' Super Mushroom Man'],[' Levi',' Ollie',' John',   ' Walter'],' The Corgi',' Seven Schemers',' City   审计员:财政困境'],['奥利','梅赛德斯''弗雷达',   ' Bryant'],' Call of Arms',' Dwarves and Swords',' The Movie:The   游戏'],[' Jennie',' Levi',' John',' Freda',' Robin& #39;],['超级   蘑菇人'恐龙晚餐',#39; Call of Arms']],[' Robin',   [' Ollie'],[' Call of Arms',' Dwarves and Swords']],[' Freda',   [' Olive',' John',' Debra'],[' Starfleet Commander',' Ninja Hamsters',   ' Seahorse Adventures']]]

问题是我需要定义一个查找连接连接的过程,但是它没有正常运行。嵌套循环只运行一次迭代。我不知道为什么。我尝试正常循环,也使用范围功能。我也使用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')

1 个答案:

答案 0 :(得分: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

希望这有用。