Python:我的for循环不起作用。只检查第一个elemen

2024-05-29 03:28:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还是相当陌生的,我的代码有问题。你知道吗

好像我的循环没有在整个网络中循环。网络是一个列表,其中每个元素都是一个人的字典,它告诉这个人的名字,它喜欢哪种游戏,它和谁有联系。 我通过在循环中放置一个打印行来测试循环,它只显示第一个元素than。正因为如此,我的结果是正确的,如果它是关于我的网络中的第一个元素。你知道吗

因此,如果我print add_connection(network, "John", "Mercedes")得到添加了连接的更新网络,这就是我所期望的,所以这是好的。但是如果我print add_connection(network, "Bryant", "John"),我希望再次得到更新的网络,但是它返回的网络没有变化。这是我的密码:

network = [{'Games': ['The Movie: The Game', 'The Legend of Corgi', 'Dinosaur Diner'], 'Connected': ['Bryant', 'Debra', 'Walter'], 'Name': 'John'}, {'Games': ['City Comptroller: The Fiscal Dilemma', 'Super Mushroom Man'], 'Connected': ['Olive', 'Ollie', 'Freda', 'Mercedes'], 'Name': 'Bryant'}, {'Games': ['The Legend of Corgi', 'Pirates in Java Island', 'Seahorse Adventures'], 'Connected': ['Walter', 'Robin', 'Bryant'], 'Name': 'Mercedes'}]


def add_connection(network, user_A, user_B):
    for eachPerson in network:
        if user_A == eachPerson["Name"]:
            exists = False
            for connection in eachPerson["Connected"]:
                if connection == user_B:
                    exists = True
            if exists == False:
                eachPerson["Connected"].append(user_B)
                return network
    return "network unchanged"

print add_connection(network, "John", "Mercedes")
print add_connection(network, "Bryant", "John")

有人知道我做错了什么吗? 谢谢


Tags: thename网络add元素networkconnectionjohn
2条回答

你试过用调试器一步一步地解决这个问题吗?我的python有点生疏,但从外观上看,如果eachPerson["Connected"]为空,那么该方法可能在第一次迭代后终止。你知道吗

有两种情况,这将终止。你知道吗

if check_in_Network(network, user_A, user_B) == False:

可以写为(不区分大小写函数名):

if not check_in_network(network, user_A, user_B): 

第二个是如果userA在网络中,并且没有与userB的连接。这听起来对吗?您可以使用以下方法单步执行代码:

import pdb
pdb.set_trace()

在函数的开头添加以上内容。 命令在这里:https://docs.python.org/2/library/pdb.html#debugger-commands

大多数情况下,n(next)、s(step)、r(return)和c(continue)就是您所需要的。你知道吗

相关问题 更多 >

    热门问题