while loop (Reposting On Python-List Prohibited)

BartC bc at freeuk.com
Wed Oct 12 06:53:24 EDT 2016


On 12/10/2016 11:15, Peter Otten wrote:
> BartC wrote:
>
>> On 12/10/2016 05:30, Lawrence D’Oliveiro wrote:
>>> On Wednesday, October 12, 2016 at 11:23:48 AM UTC+13, BartC wrote:
>>>> while n>=x:
>>>>      n=n-1
>>>>      print "*"* n
>>>> else:
>>>>      print ("2nd loop exit n=",n,"x=",x)
>>>
>>> What is the difference between that and
>>>
>>>     while n>=x:
>>>          n=n-1
>>>          print "*"* n
>>>     print ("2nd loop exit n=",n,"x=",x)
>>>
>>> ?
>>>
>>> None at all.
>>>
>>
>> Not so much in this specific example: that message will be shown whether
>> there have been 0 or more iterations of the loop body.
>>
>> But with 'else', if you see the message it means the while statement has
>> been entered. Here:
>>
>> if cond:
>>       while n>=x:
>>            n=n-1
>>            print "*"* n
>>       else:
>>            print ("2nd loop exit n=",n,"x=",x)
>
> Lawrence is right. The enclosing if doesn't make a difference.

The idea is to detect whether the while loop has been entered.

With while-else-print, it will always execute the else (assuming no 
break). With while then print, you can't tell if it has attempted to or 
not. My example above has wrapped the if-cond around the whole of 
while-else because it has to (that's the advantage).

With a separate print it need not do that:

  if cond:
     while n>=x:
        n=n-1
        print "*"* n
  print ("2nd loop exit n=",n,"x=",x)

With real code it may not be as easy to see. 'else' adds structure.

-- 
bartc



More information about the Python-list mailing list