Re: Understanding while...else...

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

  1. >
    > # 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 <> 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 <
    > > 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:
    109
    Oscar Benjamin
    Jan 23, 2013
Loading...

Share This Page