我对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")
有人知道我做错了什么吗? 谢谢
你试过用调试器一步一步地解决这个问题吗?我的python有点生疏,但从外观上看,如果
eachPerson["Connected"]
为空,那么该方法可能在第一次迭代后终止。你知道吗有两种情况,这将终止。你知道吗
可以写为(不区分大小写函数名):
第二个是如果userA在网络中,并且没有与userB的连接。这听起来对吗?您可以使用以下方法单步执行代码:
在函数的开头添加以上内容。 命令在这里:https://docs.python.org/2/library/pdb.html#debugger-commands
大多数情况下,n(next)、s(step)、r(return)和c(continue)就是您所需要的。你知道吗
相关问题 更多 >
编程相关推荐