Re: Understanding while...else...

Discussion in 'Python' started by René KlaÄan, Jan 23, 2013.

  1. 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
    <>wrote:

    > On 22 January 2013 23:41, Terry Reedy <> 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
    >
     
    René KlaÄan, Jan 23, 2013
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Gergely Kontra
    Replies:
    16
    Views:
    238
    Devin Mullins
    Sep 20, 2005
  2. Terry Reedy

    Understanding while...else...

    Terry Reedy, Jan 22, 2013, in forum: Python
    Replies:
    0
    Views:
    115
    Terry Reedy
    Jan 22, 2013
  3. Ethan Furman

    Re: Understanding while...else...

    Ethan Furman, Jan 22, 2013, in forum: Python
    Replies:
    0
    Views:
    123
    Ethan Furman
    Jan 22, 2013
  4. Terry Reedy

    Re: Understanding while...else...

    Terry Reedy, Jan 22, 2013, in forum: Python
    Replies:
    0
    Views:
    138
    Terry Reedy
    Jan 22, 2013
  5. Oscar Benjamin

    Re: Understanding while...else...

    Oscar Benjamin, Jan 23, 2013, in forum: Python
    Replies:
    0
    Views:
    110
    Oscar Benjamin
    Jan 23, 2013
Loading...

Share This Page