> > # Version 1 > while condition: > # stuff > else: > # other stuff > > # Version 2 > if condition: > while condition: > # stuff > else: > # other stuff >
they wouldnt be equivalent if #staff in version did not cointain "break" statement and this is common mistake On Wed, Jan 23, 2013 at 12:03 PM, René Klačan <rene.kla...@gmail.com> wrote: > 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