0

ダイクストラのアルゴリズムを含む解決方法がわからないという問題に遭遇しました-これが私のコードです:

infinity = 1000000
invalid_node = -1
#startNode = 0

class Node:
    distFromSource = infinity
    previous = invalid_node
    visited = False

def populateNodeTable():
     nodeTable = []
     f = open("twoDArray.txt", "r")
     for line in f.readlines(): #get number of nodes from file
       nodeTable.append(line.split(','))   # Create matrix of weights

     numNodes = len(nodeTable)            # Count nodes 
     print numNodes
     #for all nodes in text file, set visited to false, distFromSource to infinity & predecessor to none
     **for i in numNodes:
         nodeTable.append(Node(i))**
        #nodeTable.append(Node())

     nodeTable[startNode].distFromSource = 0
     print nodeTable

if __name__ == "__main__":
    populateArray()
    populateNodeTable()

このコードを実行すると、次のエラーが発生します。

    Traceback (most recent call last):
  File "2dArray.py", line 63, in <module>
    populateNodeTable()
  File "2dArray.py", line 18, in populateNodeTable
    for i in numNodes:
TypeError: 'int' object is not iterable

このエラー (アスタリスクの間のセクション) を修正する方法がわかりません。私がやろうとしているのは、コンマで区切られた一連の整数であるテキスト ファイルを読み取り、そのテキスト ファイル内のノードの数を数えることです。その後、各ノードには Node クラスの値が割り当てられます

4

3 に答える 3

2

これを試して:

for i in nodeTable:

なぜ反復しようとしているのnumNodesですか?上記の 1 行をテーブルの長さとして定義しました。

しかし、ループ内で同じテーブルに追加しても意味がありません。また、ファイルを読み取るコードとは連携しません。また、Node クラスはまったく使用できません...

于 2011-02-23T22:02:14.667 に答える
0

どうですかfor i in range(numNodes)... numNodes は単なる数値であり、数値の配列ではありません。これが目的です。

于 2011-02-23T22:03:22.883 に答える
0

要素のインデックスを反復処理する場合は、使用しますfor i, _ in enumerate(nodeTable)

要素自体にもアクセスしたい場合は、代わりに実際の名前を使用してください_

于 2011-02-23T22:02:28.270 に答える