[Tutor] For - if - else loop; print selective output

Joel Goldstick joel.goldstick at gmail.com
Wed Oct 24 19:30:32 CEST 2012


On Wed, Oct 24, 2012 at 12:49 PM, Alan Gauld <alan.gauld at btinternet.com> wrote:
> On 24/10/12 17:27, Saad Javed wrote:
>
>> a = [['jimmy', '25', 'pancakes'], ['tom', '23', 'brownies'], ['harry',
>> '21', 'cookies']]
>
>
>> for i in a:

I would change this (which works but I think is simpler

>>      if (i[1] == '25' or i[1] == '26'):

like this
         if i[1] in ('25', '26'):

>>          print 'yes'
>> else:
>>      print 'Not found'
>>
>
>> I want it to print "yes" for each positive match but nothing for a
>> negative match.
>
>
> So far so good.
>
>
>> However if all matches are negative, I want it to print
>> "Not found" once (That bit the code already does).
>
>
> Only by accident, as you've seen it always prints that if the loop
> completes. You need to keep a record of any matches and test for that after
> the loop:
>
> matched = False
> for i in a:
>    if ....
>       print 'yes'
>       matched = True
>
> if not matched:
>    print 'Not found'
>
> I confess I'm not keen on the else part of a for loop and never use it, I
> think it leads to more confusion than anything. It doesn't do what most
> folks seem to expect, it should probably be called 'end' or something
> similar rather than 'else' IMHO.
>
>>>> for n in range(5):
> ...    print n,
> ... else:
> ...    print 'done!'
> ...
> 0 1 2 3 4 done!
>>>> for n in range(5):
> ...    if n < 3: print n,
> ...    else: break
> ... else: print 'done!'
> ...
> 0 1 2
>>>>
>
>
> HTH
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor



-- 
Joel Goldstick


More information about the Tutor mailing list