On Wed, Oct 24, 2012 at 12:49 PM, Alan Gauld <alan.ga...@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@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor -- Joel Goldstick _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor