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
--
http://mail.python.org/mailman/listinfo/python-list