> The statement that you want to test the truth of is s.find(q) >= 0. In > other words, you want to see that the substring was found at a valid > (non-negative) location. As someone else pointed out, it would make more > sense to use None instead of -1.
I agree, that would be nice. You still couldn't use `if s.find(q):` because you'd get a false result > for a substring found at the beginning of the string, but the return value > would make more intuitive sense. I'm sorry, but is that so? >>>None == 0 False Since the start of the string is indicated by 0 and not None, that should work, right? Witness also the problem of actually using the result of find: > > s[s.find(q)] > > will yield a valid part of the string (the last character) when q is not > found. If it evaluated to none, you'd get a respectable TypeError instead. > > But you still wouldn't--and never will--be able to say `if s.find(q)`, > because valid array indices can be either true or false. Yes, but that is the issue here. If the substring is not found, still find() returns -1, which is a valid indice. That I think is ugly. I can't think of a case where it would be prefereble to have find() return -1 rather than None. Formally speaking, -1 is an ambigious answer, since a perfectly valid indice. the '_'.find(' ') might actually make a nice idiom while parsing for ignoring irrelevant lines, and processing lines that are of interest in the conditional expression. Cheers, -jelle
-- http://mail.python.org/mailman/listinfo/python-list