Alan G alan.gauld at freenet.co.uk
Thu Aug 18 09:44:29 CEST 2005

```I'm not exactky sure what's causing the errant behaviour but it might
help if we start off by simplifying the code a little.

> for N in range( 2, len( DEF_CARRIER_TUP) ):
>        Dis_N = DistanceCalc( DEF_CARRIER_TUP[N],
> DEF_CARRIER_TUP[N-1] )
>        print ( "Distance = " + str(Dis_N) )

print "Distance = ", Dis_N

>        Dis_Tot = float ( Dis_N ) + float ( DEF_CARRIER_DIS[N-1] )

Dis_Tot = Dis_N + DEF_CARRIER_DIS[N-1]

Dis_N is already a float from the print statement. And DisTot is
simply the collection of totals so is also floats, no need for
conversion.

>        print ( "New Total = " + str( Dis_Tot) )

print "New Total = ", Dis_Tot

>        DEF_CARRIER_DIS.append( Dis_Tot )

Also I don't see any uinitialisation of DEF_CARRIER_DIS, but as
written
the first time through the loop you access N-1, ir element 1. I have
no idea what is in element 1, but you then procede to append to it,
now the new element will go to element len(DEF_CARRIER_DIS).

Its not obvious to me the relationship between the data being
appended to the list and the data being used to do the calculation
from index N-1.

> New Total = 0.336672732923 > Distance = 0.336681748175
> New Total = 0.673377528119 > Distance = 0.336678894036
> New Total = 0.673351626959 > Distance = 0.336692518582
> New Total = 1.0100700467   > Distance = 0.336678428545
> New Total = 1.0100300555   > Distance = 0.336681289645
> New Total = 1.34675133635  > Distance = 0.336684966109
> New Total = 1.34671502161  > Distance = 0.336689614642
> New Total = 1.68344095099  > Distance = 0.336680540776
> New Total = 1.68339556239

Looking at these results I think there is a mismatch between N_1 and
the current position in the list. I think you are somehow reading
one behind where you are writing. I'd look at the initialisation
of that list.

Another option might be to use -1 as the index to ensure you
always use the last element:

Dis_Tot = Dis_N + DEF_CARRIER_DIS[-1]

HTH,

Alan G.

```