Passing Functions

yoro gmj123 at hotmail.co.uk
Thu Mar 10 20:13:36 EST 2011


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




More information about the Python-list mailing list