MRAB schrieb: > On Oct 19, 4:11 am, "Gabriel Genellina" <[EMAIL PROTECTED]> > wrote: >> En Thu, 18 Oct 2007 23:44:27 -0300, Ixiaus <[EMAIL PROTECTED]> >> escribió: >> >>> I have just come across a site that discusses Python's 'for' and >>> 'while' loops as having an (optional) 'else' structure. >>> At first glance I interpreted it as being a bit like the 'default' >>> structure in PHP's switch block... But the switch block isn't a loop, >>> so, I am now confused as to the reason for using 'else' with the for >>> and while loops... >>> A few quick tests basically show that statements in the else structure >>> are executed at the fulfillment of the loop's expression (ie, no >>> break). >> A `while` loop tests a condition: if it evaluates to true, keep cycling; >> if it is false, stop. The `else` clause is executed when the condition is >> false, as in any `if` statement. If you exit the loop by using `break`, >> the `else` part is not executed (because you didn't get out of the loop by >> determining the condition falseness) >> >> You can think of a `for` loop as meaning `while there are remaining >> elements to be iterated, keep cycling` and the `else` clause applies when >> there are no more elements. A `break` statement does not trigger the else >> clause because the iteration was not exhausted. >> >> Once you get the idea, it's very simple. >> > It's useful when you want to search for an item and to do something if > you don't find it, eg: > > for i in items: > if is_wanted(i): > print "Found it" > break > else: > print "Didn't find ir"
Wrong. It's not: for i in []: print i else: print "I'm reached, too" prints out "I'm reached, too" The else will ONLY not get executed when the loop is left prematurely through a break: for i in [1]: print i break else: print "I'm reached, too" won't print the "I'm ..." Diez -- http://mail.python.org/mailman/listinfo/python-list