私はリストを間違って初期化していることは間違いないと思います。 最初はmain()では表示されないクラスが原因だと考えましたが、メインを削除した後も同じエラーが返されました。 私はPythonリファレンスを読んで、コード間に矛盾がないことを発見しました。目に見えないエラーを正確に特定することができますか?前もって感謝します!Pythonクラスがmainで初期化できません。間違ったパラメータが使用されていますか?
参考:https://docs.python.org/3/tutorial/classes.html
エラーが返さ:
Traceback (most recent call last):
File "dfs_final.py", line 12, in <module>
class node(object):
File "dfs_final.py", line 77, in node
main()
File "dfs_final.py", line 68, in main
nodes = [ node(i, nodes[2*i], nodes[(2*i)+1, false]) for i in range(10)]
File "dfs_final.py", line 68, in <listcomp>
nodes = [ node(i, nodes[2*i], nodes[(2*i)+1, false]) for i in range(10)]
NameError: name 'node' is not defined
コード:
class node(object):
def __init__(self,cargo = None, left = None, right = None, found = None):
self.cargo = cargo
self.left = left
self.right = right
self.found = found
def __str__(self):
return str(self.cargo)
# pass in root to begin search
def DFS(curr_node, visited = []):
# Return if node DNE
if not curr_node:
return
# if already visited, return cycle
for i in visited:
if (curr_node.cargo == visited[i]):
err_str = "It's a cycle :("
return err_str
# mark node as found
curr_node.found = true
# add to visited list
visited += [curr_node.cargo]
# pass in node.left, node.right to recurse
DFS(curr_node.left, visited) # Go left first
DFS(curr_node.right, visited) # Try right
# After finished traversing tree
return visited
def main():
adjacency_matrix = {1: [2, 3], 2: [4, 5],
3: [5], 4: [6], 5: [6],
6: [7], 7: []}
# Initialize array of nodes to pass
for i in range(10):
nodes = [ node(i, nodes[2*i], nodes[(2*i)+1, false]) for i in range(10)]
for i in nodes:
print(nodes[i].cargo)
# Pass into function
# DFS(nodes)
if __name__ == "__main__":
main()
インデントはPythonで問題になり、あなたのものは壊れています。あなたはそれを修正する必要があります。 – user2357112