On 24/10/12 17:27, Saad Javed wrote:
a = [['jimmy', '25', 'pancakes'], ['tom', '23', 'brownies'], ['harry',
'21', 'cookies']]
for i in a:
if (i[1] == '25' or i[1] == '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