Ok, j'ai un peu changé mon code, mais je suis confus sur les noms de variables qui devraient être passés à ma fonction la plus proche. Ces deux fonctions fonctionnent bien:Détermination du plus proche voisin à Dijkstra
infinity = 1000000
invalid_node = -1
startNode = 0
#Values to assign to each node
class Node:
def __init__(self):
self.distFromSource = infinity
self.previous = invalid_node
self.visited = False
#read in all network nodes
#node = the distance values between nodes
def network():
f = open ('network.txt', 'r')
theNetwork = [[int(networkNode) for networkNode in line.split(',')] for line in f.readlines()]
#theNetwork = [[int(node) for node in line.split(',')] for line in f.readlines()]
#print theNetwork
return theNetwork
#for each node assign default values
#populate table with default values
def populateNodeTable():
nodeTable = []
index = 0
f = open('network.txt', 'r')
for line in f:
networkNode = map(int, line.split(','))
nodeTable.append(Node())
#print "The previous node is " ,nodeTable[index].previous
#print "The distance from source is " ,nodeTable[index].distFromSource
#print networkNode
index +=1
nodeTable[startNode].distFromSource = 0
return nodeTable
Alors, tout va bien. Cependant, ma prochaine fonction est de me donner une erreur, et bien que je change de noms de variables entre parenthèses je ne peux pas résoudre le problème. Voici le code suivant de la fonction et le message d'erreur:
def nearestNeighbour(nodeTable, theNetwork):
listOfNeighbours = []
nodeIndex = 0
for networkNode in nodeTable[currentNode]:
if networkNode != 0 and networkNode.visited == False:
listOfNeighbours.append(nearestNode)
nodeIndex +=1
print listOfNeighbours
## #print node.distFromSource, node.previous, node.visited
##
return listOfNeighbours
for networkNode in nodeTable[currentNode]:
TypeError: iteration over non-sequence
"J'ai changé un peu de code" - changé de quoi? S'il s'agit d'une question de suivi, veuillez ajouter le lien à la question précédente afin que tout le monde puisse comprendre le contexte. – MAK
Il semble que je ne puisse pas annuler mon édition pour obtenir mon code précédent. Oui, donc je ne fais aucune incursion sur ma fonctionNeigbour la plus proche et je ne sais pas pourquoi – user612041