"Jeff Shannon" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > 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 > Technician/Programmer > Credit International > Thanks Jeff, that solves my problem. BTW: is there an easy way to break/continue out more than one level?
-- http://mail.python.org/mailman/listinfo/python-list