我很確定我錯誤地初始化了這個列表,但是不管它是錯誤的參數還是錯位的語法,我都不能說。首先,我認爲這是由於main()中不可見的類,但在移除main之後,仍然返回相同的錯誤。 我已閱讀了Python參考資料,發現我們的代碼之間沒有差異。非常感謝指出任何看不見的錯誤。提前致謝!Python類無法初始化,錯誤的參數使用?
參考: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