newbie question on def, passing param's help

Lee Harr missive at frontiernet.net
Sat Jul 14 00:57:01 CEST 2007


> I have a def that I have been using but I realized that sometimes I need a LIST with
> 5 or 6 brands instead of 4 so I want to put LIST outside of the def but I can't wrap
> my head around a way to get LIST outside the def while still passing the same 4
> parameters in the function.  I'm sure there is probably a simple answer but I can't
> seem to think of it.


> Here is what I want:
>
>
> LIST=((row,base,lastcol,"A13","013"),(row,base,lastcol-1,"A14","014"),(row,base,lastcol-2,"A15","015"),(row,base,lastcol-3,"A16","016"),                      #brand1
>       (row+20,base+20,lastcol,"A9","09"),(row+20,base+20,lastcol-1,"A10","010"),(row+20,base+20,lastcol-2,"A11","011"),(row+20,base+20,lastcol-3,"A12","012"),#brand2
>       (row+40,base+40,lastcol,"A5","05"),(row+40,base+40,lastcol-1,"A6","06" ), (row+40,base+40,lastcol-2,"A7","07" ), (row+40,base+40,lastcol-3,"A8","08" ), #brand3
>       (row+60,base+60,lastcol,"A1","01"),(row+60,base+60,lastcol-1,"A2","02" ), (row+60,base+60,lastcol-2,"A3","03" ), (row+60,base+60,lastcol-3,"A4","04" ), #brand4
>       (row+80,base+80,lastcol,"A1","01"),(row+80,base+80,lastcol-1,"A2","02" ), (row+80,base+80,lastcol-2,"A3","03" ), (row+80,base+80,lastcol-3,"A4","04" )) #brand5


How about if you make this a separate function, and
return the list (actually, what you have here is a
tuple) that you want:

def excells(row, base, lastcol):
    thelist = ((row, base, lastcol, "A13", "013"), ...
    return thelist


The function might even take other parameters that tell whether
to return 4, 5, or 6 brands.


> def attributesbyID(row,base,slideID,spreadsheet):
> 	sh = wb.Worksheets (spreadsheet)
> 	sh.Select()
>  	##########################################################
>  	################ POWERPOINT SECTION ######################

        lastcol = ??????
        LIST = excells(row, base, lastcol)

> 	for shape in WB.Slides.FindBySlideID(slideID).Shapes:
> 		if (shape.Type== 7):
> 		 	for oROW,oBASE,oCOL,oCELL,oHEADERCELL in LIST:
> 				oVALUE = sh.Cells(oROW,oCOL).Value
> 				oHEADER = sh.Cells(4,oCOL).Value  + " (n="  +  str(int(sh.Cells(oBASE,oCOL).Value))  + ")"
> 				PWB = WB.Slides.FindBySlideID(slideID).Shapes(shape.Name)
> 				oGraph = PWB.OLEFormat.Object
> 				oGraph.Application.datasheet.Range(oCELL).Value = oVALUE
> 				oGraph.Application.datasheet.Range(oHEADERCELL).Value = oHEADER
> 		
>        ###########################################################
> 	del oGraph
> attributesbyID(14,12,31,"Attributes") # attr1




More information about the Python-list mailing list