On 2007-05-09, Greg Corradini <[EMAIL PROTECTED]> wrote: > > Hello all, > I'm having trouble understanding why the following code evaluates as it > does: > >>>> string.find('0200000914A','.') and len('0200000914A') > 10 > True >>>> len('0200000914A') > 10 and string.find('0200000914A','.') > -1 > > In the 2.4 Python Reference Manual, I get the following explanation for > the > 'and' operator in 5.10 Boolean operations: > " The expression x and y first evaluates x; if x is false, its value is > returned; otherwise, y is evaluated and the resulting value is returned." > > Based on what is said above, shouldn't my first expression ( > string.find('0200000914A','.') and len('0200000914A') > 10) evaluate to > false b/c my 'x' is false? And shouldn't the second expression evaluate to > True? >The find method doesn't return a boolean, but returns the index where >the substring was found with -1 indicating it wasn't found. If you just >want to check wether one string is a substring of an other, use the in >operator. >>> '.' in '0200000914A' and len('0200000914A') > 10 False >>> len('0200000914A') > 10 and '.' in '0200000914A' False Thank you Diez and Antoon for demystifing this problem. I see where I've been going wrong. -- View this message in context: http://www.nabble.com/Boolean-confusion-tf3715438.html#a10393765 Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list