[Tutor] While and for loops

Alan Gauld alan.gauld at btinternet.com
Tue Jul 14 09:44:51 CEST 2009

"wesley chun" <wescpy at gmail.com> wrote 

> as i mentioned in my other msg, you need another break statement that
> is *not* in another loop. in your case, not in the for-loop. you need
> a break statement somewhere within your while block (again, that's not
> in any other loop). IOW, it should be indented at the same level as
> the for-loop. it's up to you to determine the logic with which you
> call your break, because if you just put it out there, your while will
> only run at most once (or less than once).

And for completeness that would probably look like:

while True:
    <do something>
    for i in items:
        if i > 10:
            break    # out of the for
            <do something>
    if i > 10:
        break   # out of the while under the same conditions

But as Wesley said, for this specific case the Found / notFound 
sentinel approach is nicer.

Although there is a school of thought says break statements 
are only slightly less evil than goto and should be avoided if 
possible. In that case you can do it by inverting the logic of 
the tests:

i = 0
while i <= 10:
    <do something>
    for i in items:
        if i <= 10:
           <do something>

But, as usual with purist approaches the result might look 
neater buts it is far less efficient and less flexible!


Alan Gauld
Author of the Learn to Program web site

More information about the Tutor mailing list