Heim  >  Fragen und Antworten  >  Hauptteil

Über TypeError: 1 erforderliches Positionsargument in Python fehlt

Ich habe angefangen, Python zu lernen und habe mir den Teil über Datenstrukturen zu Diagrammen angesehen. Dies dient dazu, die Tiefendurchquerung und die Breitendurchquerung eines Diagramms zu implementieren, aber am Ende ist es g.add_nodes([i+1 für i in range(10)]) TypeError: add_nodes() fehlt 1 erforderliches Positionsargument: „nodelist“ wird angezeigt. Ich habe keine Ahnung, wie ich das Problem lösen kann.

Das ist mein Programm

Klassendiagramm (Objekt):

def __init__(self, *args, **kwargs):
    self.node_neighbors = {}
    self.visited = {}

def add_nodes(self,nodelist):
    for node in nodelist:
        self.add_node(node)

def add_node(self,node):
    if node not in self.add_nodes():
        self.node_neighbors[node] = []

def add_edge(self,edge):
    u, v = edge
    if(v not in self.node_neighbors[u]) and (u not in self.node_neighbors[v]):
        self.node_neighbors[u].append(u)
        if(u!=v):
            self.node_neighbors[v].append(u)

def nodes(self):
    return self.node_neighbors.keys()

def depth_first_search(self, root=None):
    order = []
    def dfs(node):
        self.visited[node] = True
        order.append(node)
        for  n in self.node_neighbors[node]:
            if not n in self.visited:
                dfs(n)
    if root:
        dfs(root)
    for node in self.nodes():
        if not node in self.visited:
            dfs(node)
    print(order)
    return order

def breadtg_frist_search(self, root = None):
    queue = []
    order = []
    def bfs():
        while len(queue) >  0:
            node = queue.pop()
            self.visited[node] = True
            for n in self.node_neighbors[node]:
                if (not n in self.visited) and (not n in queue):
                    queue.append(n)
                    order.append(n)
    if root:
        queue.append(root)
        order.append(root)
        bfs()
    for node in self.nodes():
        if not node in self.visited:
            queue.append(node)
            order.append(node)
            bfs()
    print(order)
    return order

if name == '__main__':

g = Graph()

g.add_nodes([i+1 für i in range(10)])
g.add_edge((1, 2))
g.add_edge((1, 3))
g.add_edge((2, 4) )
g.add_edge((2, 5))
g.add_edge((4, 8))
g.add_edge((5, 8))
g.add_edge((5, 9))
g.add_edge( (3, 6))
g.add_edge((3, 7))
g.add_edge((7, 10))
g.add_edge((9, 10))
print('nodes:' + g.nodes ())
order = g.breadtg_frist_search(1)
order = g. Depth_first_search(1)

仅有的幸福仅有的幸福2658 Tage vor2487

Antworte allen(1)Ich werde antworten

  • 学习ing

    学习ing2017-06-14 10:53:00

    def add_node(self,node):
        if node not in self.add_nodes():
            self.node_neighbors[node] = []
    

    if node not in self.add_nodes():中的add_nodes()需要参数,具体要什么看你自己了.

    Antwort
    0
  • StornierenAntwort