they wouldnt be equivalent if #staff in version 1 did not cointain "break" statement and this is common mistake
On Wed, Jan 23, 2013 at 1:39 AM, Oscar Benjamin <oscar.j.benja...@gmail.com>wrote: > On 22 January 2013 23:41, Terry Reedy <tjre...@udel.edu> wrote: > > On 1/22/2013 3:09 PM, Ethan Furman wrote: > >> > >> On 01/22/2013 09:44 AM, Terry Reedy wrote: > >>> > [SNIP] > >>> The else clause is executed if and when the condition is false. > >>> Now use a real Python while statement to do the *same > >>> thing*. > >>> > >>> while n > 0: > >>> n -= 1 > >>> else: > >>> n = None > >> > >> > >> I understand how it works (although it did take a while for it to sink > >> in); my gripe, and probably why it is misunderstood so often, is that > >> nine times out of ten when I /want/ to use a while-else or for-else I > >> only want the true/false check /once/, at the beginning of the loop. > > > > > > I do not understand what you are saying. There already is only one > > true/false check, at the beginning of the loop. If you only want the > check > > *performed* once, you would use if-else. But I presume you know this. > > I think he meant that he would use the else clause more often if it > had the semantics so that the two blocks below were equivalent: > > # Version 1 > while condition: > # stuff > else: > # other stuff > > # Version 2 > if condition: > while condition: > # stuff > else: > # other stuff > > So he wants a convenient way to execute code only if the loop > performed zero iterations. I think that often when people are confused > about the else clause on while loops it is because they expect this > behaviour (which would also be useful). The same confusion arises with > for loops where people expect the else clause to execute if the > iterable was empty so that these would be equivalent: > > # Version 1 > for x in iterable: > # stuff > else: > # other stuff > > # Version 2 > iterated = False > for x in iterable: > iterated = True > # stuff > if not iterated: > # other stuff > > > Oscar > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list