POST GOT已编辑!(我很抱歉,如果它很复杂,但是你们因为假设你无法获得我的代码而给我投票)
self.Nodes是一组节点,每个节点都有一组节点(从self.Nodes中随机选择)本身存储在相关节点中。
def NodeRel(self, CurAvailables):
for Node in CurAvailables:
if Node in self.availables:
self.availables.remove(Node)
if len(Node.relevant) == 0:
chosen = sample(CurAvailables, randint(1, 2-len(Node.relevant)))
elif 3 > len(Node.relevant) > 0:
chosen = sample(CurAvailables, randint(0, 2-len(Node.relevant)))
else:
continue
for item in chosen:
item.relevant.add(Node)
Node.relevant.add(item)
if len(item.relevant) > 1 and item in self.availables:
self.availables.remove(item)
def tester(Nody):
self.test.add(Nody)
Nody.checked = True
for relly in Nody.relevant:
if not relly.checked:
self.test.add(relly)
relly.checked = True
tester(relly)
if relly.checked:
self.test.add(relly)
tester(self.Nodes[0])
if len(self.test) != len(self.Nodes):
self.NodeRel(self.Nodes.copy())
在较低的代码中我运行它:
self.availables = set()
self.availables.update(self.Nodes)
# self.RelevantHandler(self.availables)
self.NodeRel(self.availables.copy())
我希望这个函数继续运行并重复自己,直到len(self.test)和len(self.Nodes)具有相同的长度,但这是结果(在控制台或调试器中):
self.NodeRel()正在重复自身,而不是实际进入self.NodeRel(),我必须在第一次运行时添加它确实进入函数,这是递归不起作用
发布于 2019-05-27 10:40:28
请问你想要完成什么,而不是说你的代码不起作用。话虽如此
这段代码:
def NodeRel("List")
是无效的语法。函数定义需要参数的标识符而不是字符串文字。所以它应该是真的def NodeRel(my_list):
第二。你永远不会改变的无论是长度List1
还是List2
。因此,如果它们以不同的长度开始,那么这段代码将永远运行。在if语句中,您应该将一个随机元素添加到较小的列表中。
https://stackoverflow.com/questions/-100006803
复制相似问题