搜尋

首頁  >  問答  >  主體

關於Python 中出現的TypeError: missing 1 required positional argument

開始學習python正在看資料結構關於圖的部分這個是在實作一個圖的深度優先遍歷和廣度優先遍歷,但是在最後,也就是g.add_nodes([i 1 for i in range(10)] )會顯示TypeError: add_nodes() missing 1 required positional argument: 'nodelist' 就完全不知道該怎麼去解決,有沒有大神可以指點一下。

這個是我的程式

class Graph(object):

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 for 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)

仅有的幸福仅有的幸福2725 天前2539

全部回覆(1)我來回復

  • 学习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()需要參數,具體要什麼看你自己了.

    回覆
    0
  • 取消回覆