2013-06-05 38 views
0
def getPressAve(odbname): 
    odb=openOdb(odbname) 
    lastFrame=odb.steps['Step-1'].frames[-1] 
    pressure=lastFrame.fieldOutputs['CPRESS'] 
    press=[[0,0]] # sets the first element to [0,0] 

    for n in pressure.values: 
     gridPt=part1.nodes.getFromLabel(n.nodeLabel) 

     coord=assemb.getCoordinates(gridPt) 
     press.append([n.nodeLabel,n.data,coord]) 
     press=avePress=press[1:] # removes the first element 
     press.sort(Comp_X) 
     print ('pressure extracted') 

     index=0 
     while index<len(press): 
     sum=0 
     tally=0 

     if index!=0: 
      sum=sum+press[index-1][1] 
     tally=tally+1 

     if index!=1: 
      sum=sum+press[index-2][1] 
     tally=tally+1 

     if index!=2: 
      sum=sum+press[index][1] 
     tally=tally+1 

     if index<len(press)-1: 
      sum=sum+press[index+1][1] 
     tally=tally+1 

     if index<len(press)-2: 
      sum=sum+press[index+2][1] 
     tally=tally+1 

     average=sum/tally 
     avePress[index][1]=average 
     index=index+1 

    odb.close() 
    print ('pressure averaged') 
    return avePress 
+0

描述请 –

回答

0

你忘了适当缩进代码:

def getPressAve(odbname): 
    odb=openOdb(odbname) 
    ... 
    print ('pressure averaged') 
    return avePress 

由于你没有得到,该return关键字特色功能之外,因此错误:SyntaxError: 'return' outside function

1

在Python中,缩进很重要。正如,你定义一个名为getPressAve功能,确实只有这个:

odb=openOdb(odbname) 

已经定义了你的功能后,你继续做

lastFrame=odb.steps['Step-1'].frames[-1] 

和这样以外的功能。这不是你想要的。解决方案是将该行之后的所有内容缩进到该级别,以便将这些行解释为该函数主体的一部分。