break/continue - newbe
Ann at nospam.invalid
Tue Dec 21 21:27:57 CET 2004
"Jeff Shannon" <jeff at ccvcorp.com> wrote in message
news:10sh1ct2oj519da at corp.supernews.com...
> Ann wrote:
> >I have trouble sometimes figuring out where
> >break and continue go to. Is there some easy
> >way to figure it out, or a tool?
> Break and continue always operate on the most-nested loop that's
> currently executing. To show an example, let's add some line numbers to
> some code...
> 1) while spam:
> 2) if foo(spam):
> 3) continue
> 4) for n in range(spam):
> 5) if bar(n):
> 6) break
> 7) results.append(baz(spam, n))
> 8) spam = spam - 1
> Now, when this loop runs, when foo(spam) evaluates as True we execute
> the continue at line 3. At this time, we're running code that's at the
> loop-nesting level just inside 'while spam' (line 1), so line 1 is the
> loop statement that's affected by the continue on line 3. If line 3 is
> triggered, then we skip lines 4-8 and go back to line 1.
> If line 3 is *not* triggered, then we enter a for loop at line 4.
> There's a break at line 6; if this gets triggered, then we look
> backwards to find the most-current (i.e. most nested) loop, which is now
> that for loop on line 4. So we break out of that for loop (which
> comprises lines 4-7), and drop down to line 8.
> So, in general, the way to determine how break and continue will affect
> program flow is to look backwards (up) for the most recent loop
> statement; the break/continue will be inside that statement's dependent
> body. Break will drop you down to the next line after the loop body,
> and continue will bring you back up to the top of the loop body and the
> start of the next loop iteration.
> Jeff Shannon
> Credit International
Thanks Jeff, that solves my problem. BTW: is there an easy way to
break/continue out more than one level?
More information about the Python-list