[portland] Need Help With a For Loop

Brett Carter brett at rdnzl.net
Thu Mar 20 18:45:50 CET 2008


Rich, are you sure this loop is doing what you want it to?  You're
incrementing i 'range(1, compList[0][16])' times, but i is never tested
in the loop.
-Brett

Rich Shepard wrote:
>    I cannot see what's causing the error I see, but it must be something
> simple that I've overlooked. Your more experienced eyes will probably see
> it.
> 
>    Here's the for loop:
> 
>  	for i in range(1, compList[0][16]):
>            pylab.hold(True)
>            if compList[0][4] == 'Decay S-Curve':
>              testFunctions.zCurve(compList[0][10],compList[0][9])
>            elif compList[0][4] == 'Bell Curve':
>              testFunctions.gaussCurve(compList[0][14],compList[0][14])
>            elif compList[0][4] == 'Growth S-Curve':
>              testFunctions.sCurve(compList[0][8],compList[0][11])
>            elif compList[0][4] == 'Beta':
>  	    testFunctions.betaCurve(compList[0][13],compList[0][12],compList[0][14])
>            elif compList[0][4] == 'Data':
>              continue
>            elif compList[0][4] == 'Linear Increasing':
>              testFunctions.linearIncrCurve(compList[0][8],compList[0][11])
>            elif compList[0][4] == 'Linear Decreasing':
>              testFunctions.linearDecrCurve(compList[0][10],compList[0][9])
>            elif compList[0][4] == 'Left Shoulder':
>  	    testFunctions.leftShoulderCurve(compList[0][10],compList[0][11],compList[0][9])
>              continue
>            elif compList[0][4] == 'Trapezoid':
>  	    testFunctions.trapezoidCurve(compList[0][8],compList[0][10],compList[0][11],compList[0][9])
>              continue
>            elif compList[0][4] == 'Right Shoulder':
>  	    testFunctions.rightShoulderCurve(compList[0][8],compList[0][10],compList[0][11])
>              continue
>            elif compList[0][4] == 'Triangle':
>  	    testFunctions.triangleCurve(compList[0][8],compList[0][13],compList[0][9])
>            elif compList[0][4] == 'Singleton':
>              testFunctions.singletonCurve(compList[0][13],compList[0][14])
>            elif compList[0][4] == 'Rectangle':
>  	    testFunctions.rectangleCurve(compList[0][8],compList[0][10],compList[0][11],compList[0][9])
>            elif compList[0][4] == 'Outcome':
>              testFunctions.outcomeCurve()
>          pylab.savefig(curVar+'.png')
> 
>    The first 'i' passes the first 'if' test and control passes to
> testFunctions.zCurve(). When that function returns, the program is NOT at the
> 'for' statement again, but at one earlier in the code.
> 
>    So, instead of incrementing i and running through the if tests (which
> should take it to the one for 'Growth S-Curve', it repeats the same plotting
> function call then immediately jumps to pylab.savefig().
> 
>    Why?
> 
>    I can provide the test code with data and the ancillary module with the
> plotting functions, but you'd need NumPy and Matplotlib installed to run it.
> 
> TIA,
> 
> Rich
> 



More information about the Portland mailing list