On Mar 11, 2:00 am, MRAB <pyt...@mrabarnett.plus.com> wrote: > On 11/03/2011 01:13, yoro wrote: > > > Hi, > > > I am having an issue with passing values from one function to another > > - I am trying to fill a list in one function using the values > > contained in other functions as seen below: > > > infinity = 1000000 > > invalid_node = -1 > > startNode = 0 > > > #Values to assign to each node > > class Node: > > distFromSource = infinity > > previous = invalid_node > > visited = False > > > #read in all network nodes > > def network(): > > f = open ('network.txt', 'r') > > theNetwork = [[int(node) for node in line.split(',')] for line in > > f.readlines()] > > print theNetwork > > > return theNetwork > > > #for each node assign default values > > def populateNodeTable(): > > nodeTable = [] > > index = 0 > > f = open('network.txt', 'r') > > for line in f: > > node = map(int, line.split(',')) > > nodeTable.append(Node()) > > > print "The previous node is " ,nodeTable[index].previous > > print "The distance from source is > > " ,nodeTable[index].distFromSource > > index +=1 > > nodeTable[startNode].distFromSource = 0 > > > return nodeTable > > > #find the nearest neighbour to a particular node > > def nearestNeighbour(currentNode, theNetwork): > > nearestNeighbour = [] > > nodeIndex = 0 > > for node in nodeTable: > > if node != 0 and currentNode.visited == false: > > nearestNeighbour.append(nodeIndex) > > nodeIndex +=1 > > > return nearestNeighbour > > > if __name__ == "__main__": > > nodeTable = populateNodeTable() > > theNetwork = network() > > nearestNeighbour(currentNode, theNetwork, ) > > > So, I am trying to look at the values provided by the network > > function, set all nodes to 'visited = false' in populateNodeTable > > function and then determine the nodes' nearest neighbour by looking at > > the values provided in the previous function, though I get this error > > message: > > > if node != 0 and currentNode.visited == false: > > AttributeError: 'int' object has no attribute 'visited' > > > I'm not sure what to try next > > In nearestNeighbour, 'currentNode' is an int because that's what you're > passing in ... except that you aren't. > > You're passing in the value of the global 'currentNode', which doesn't > exist. Perhaps you meant 'startNode'? > > When I run the above program I get: > > Traceback (most recent call last): > File "C:\Documents and Settings\Administrator\Desktop\network.py", > line 49, in <module> > nearestNeighbour(currentNode, theNetwork, ) > NameError: name 'currentNode' is not defined
I've found the error, I had to type in: for node in nodeTable: if node != 0 and Node.visited == False: -- http://mail.python.org/mailman/listinfo/python-list