Good python equivalent to C goto
info at orlans-amo.be
info at orlans-amo.be
Sun Aug 17 14:15:39 EDT 2008
On Aug 17, 8:09 pm, Matthew Fitzgibbons <eles... at nienna.org> wrote:
> Kurien Mathew wrote:
> > Hello,
>
> > Any suggestions on a good python equivalent for the following C code:
>
> > while (loopCondition)
> > {
> > if (condition1)
> > goto next;
> > if (condition2)
> > goto next;
> > if (condition3)
> > goto next;
> > stmt1;
> > stmt2;
> > next:
> > stmt3;
> > stmt4;
> > }
>
> > Thanks
> > Kurien
> > --
> >http://mail.python.org/mailman/listinfo/python-list
>
> I would not be too happy if I saw C code like that in my repository.
> This is equivalent:
>
> while (loopCondition) {
> if (!(condition1 || condition2 || condition3)) {
> stmt1;
> stmt2;
> }
> stmt3;
> stmt4;
>
> }
>
> In Python:
>
> while (loopCondition):
> if not (condition1 or condition2 or condition3):
> stmt1
> stmt2
> stmt3
> stmt4
>
> If stmt3 and stmt4 are error cleanup code, I would use try/finally.
>
> while loopCondition:
> try:
> if condition1:
> raise Error1()
> if condition2:
> raise Error2()
> if condition3:
> raise Error3()
> stmt1
> stmt2
> finally:
> stmt3
> stmt4
>
> This will also bail out of the loop on and exception and the exception
> will get to the next level. If you don't want that to happen, put an
> appropriate except block before the finally.
>
> -Matt- Hide quoted text -
>
> - Show quoted text -
class Goto_Target(Exception):
pass
def Goto_is_not_dead(nIn):
try:
if (nIn == 1): raise Goto_Target
if (nIn == 2): raise Goto_Target
inv = 1.0 / nIn
print 'Good Input ' + str(nIn) + ' inv=' + str(inv)
except Goto_Target:
pass
except Exception, e:
print 'Error Input ' + str(nIn) + ' ' + str(e)
finally:
print 'any input ' + str(nIn)
if __name__ == '__main__':
Goto_is_not_dead(0)
Goto_is_not_dead(2)
Goto_is_not_dead(3)
More information about the Python-list
mailing list