Alan Gauld schreef op wo 24-10-2012 om 17:49 [+0100]: > I confess I'm not keen on the else part of a for loop and never use > it, > I think it leads to more confusion than anything. It doesn't do what > most folks seem to expect, it should probably be called 'end' or > something similar rather than 'else' IMHO. > > >>> for n in range(5): > ... print n, > ... else: > ... print 'done!' > ... > 0 1 2 3 4 done! > >>> for n in range(5): > ... if n < 3: print n, > ... else: break > ... else: print 'done!' > ... > 0 1 2
This confused me somewhat and after a little experimenting and looking at the docs [1] I now get what you hint at (but do not spell out :-)). The devil is in the break statement. I _try_ to describe this below based on the docs and the experimentation in the hope that other people find it useful. Loops (for and while) can have an optional else clause. The else clause is always executed *unless* you call the break statement in your loop. If you call a break statement in your loop the else clause is never executed. If the break statement is never called the else clause is executed. break statements in *nested* loops do *not* interfere with the else clause the parent loop and vice versa. It only applies to the current loop the break statement is called in. There is a good example for prime numbers in the docs. Greets Sander [1]http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor