Hi, You're thinking you're passing the arguments as reference (look at mutable vs non-mutable)
Your function returns the values in a tupple (x,y,...); you need to fetch the values from that tupple Regards, Philippe David wrote: > Hi I'm trying to teach myself python and so far to good, but I'm having > a bit of trouble getting a function to work the way I think it should > work. Right now I'm taking a simple program I wrote in Fortran and > trying to do it in Python. I got it to work, but now I'm trying to > modularize it. My fortran program uses a subroutine and I was trying > to do the same thing in Python. But I'm still new so I'm having > trouble understanding what I'm doing wrong. Here is my code: > > #! /usr/bin/python > #This program takes two vectors and multiplies them > #against a 10X10 array. It also then gives the dot product, > #sum, and max value of the array. > > import Numeric > def abc(array1,array2,dotprod,sum,maxvalue): > """Takes two arrays and performs predetermined calculations, > Then returns the solutions back as the same array, along > with the dot product, sum, and max value of the array.""" > #TODO: Get this damn thing working!! > print "Array 1 in:",array1 #Debug > data = Numeric.zeros((10,10)) > for i in range(10): > for j in range(10): > data[i,j] = (i+1)+(j+1) > > e = Numeric.matrixmultiply(data, array1) > g = Numeric.matrixmultiply(Numeric.transpose(data),array2) > array1 = e > array2 = g > dotprod = Numeric.dot(array1,array2) > sum = Numeric.sum(array1) > maxvalue = array2[Numeric.argmax(array2)] > print "Array 1 out:",array1 #Debug > > return array1,array2,dotprod,sum,maxvalue #<<-- Not working as I > thought it would. > > x = Numeric.arange(1,11) > y = Numeric.arange(1,11)*2 > dotp,sumx,maxv = 0,0,0 #Is this the only way to declare a variable? > > print 'Array X:',x > print 'Array Y:',y > abc(x,y,dotp,sumx,maxv) > print 'Calling function abc' > print 'Array X:',x > print 'Array Y:',y > print 'Dot Product of X and Y:',dotp > print 'Sum of array X:',sumx > print 'Max value of array Y:',maxv > > If you run it the data gets passed to the function just fine and it > finds the right numbers. Its just getting it to pass them back thats > not working. I put some print statements inside the function just to > see how the data gets passed. So any ideas that would help me? If you > want to see the fortran code just email me. > > David -- http://mail.python.org/mailman/listinfo/python-list