error in the if, elif, else statement ?

John Machin sjmachin at lexicon.net
Wed May 9 08:54:42 EDT 2007


On May 9, 5:46 pm, juan-manuel.behre... at siemens.com wrote:
> Hello together,
>
> I wrote a script for the engineering software abaqus/CAE. It worked
> well until I implemented a selection in order to variate the variable
> "lGwU" through an if elif, else statement. I am going to post the
> first 82 lines of the script, since the error message points at line
> 80:
>
> from abaqusConstants import *
> from abaqus import *
>
> def CreateSchraube(name, l, flag=None, flag2=None):
>         import part
>         vp = session.currentViewportName
>         model = session.sessionState[vp]['modelName']
>         m = mdb.models[model]
>         s = m.ConstrainedSketch(name='__profile__', sheetSize=1000.0)
>         s.ConstructionLine(point1=(0.0, -500.0), point2=(0.0, 500.0))
>
>         if flag==1:
>
>           dh = 15.0
>           z = 15.0
>           dz = 60.0
>           d = 72.0
>           f = 1.0
>           dD = f*62.0
>           lGwO = 110.0
>
>           if flag2==11:                       # here appears the
> beginning of the new impletation in order to variate lGwU
>              lGwU = 0.8*d                  # you can see these inner
> if, elif, else statement 4 times, because
>           elif flag2==12:                    # the outer if, elif,
> else statement (which works!) has 4 cases

You have an error in your code (flag instead of flag2).

Your coding style is not conducive to ease of maintenance and
avoidance of errors. Here are some suggestions:

Rip out the three-fold repetition of the same code, replace that code
by:

assert 11 <= flag2 <= 13
lGwU = (flag2 * 0.2 - 1.4) * d

and move it down the end.

Also get rid of any remaining instances of "else: pass".

Then consider replacing all those tedious assignments ...

data = (
    (15., 15., 60, ..........),
    (.........),
    etc,
    etc,
    )
assert 1 <= flag <= len(data) == 4
dh, z, dz, ...... = data[flag-1]

Then chose some meaningful names instead of flag and flag2.




More information about the Python-list mailing list