Re: Boolean confusion
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('020914A','.') and len('020914A') > 10 > True >>>> len('020914A') > 10 and string.find('020914A','.') > -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('020914A','.') and len('020914A') > 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 '020914A' and len('020914A') > 10 False >>> len('020914A') > 10 and '.' in '020914A' 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
Re: Boolean confusion
Thank you Diez and Antoon for demystifing this problem. I see where I've been going wrong. Diez B. Roggisch-2 wrote: > > Greg Corradini wrote: > >> >> Hello all, >> I'm having trouble understanding why the following code evaluates as it >> does: >> >>>>> string.find('020914A','.') and len('020914A') > 10 >> True >>>>> len('020914A') > 10 and string.find('020914A','.') >> -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('020914A','.') and len('020914A') > 10) evaluate to >> false b/c my 'x' is false? And shouldn't the second expression evaluate >> to >> True? > > The first evaluates to True because len(...) > 10 will return a boolean - > which is True, and the semantics of the "and"-operator will return that > value. > > And that precisely is the reason for the -1 in the second expression. > > y=-1 > > and it's just returned by the and. > > in python, and is implemented like this (strict evaluation > nonwithstanding): > > def and(x, y): > if bool(x) == True: >return y > return x > > Diez > -- > http://mail.python.org/mailman/listinfo/python-list > > -- View this message in context: http://www.nabble.com/Boolean-confusion-tf3715438.html#a10393705 Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list
Re: Boolean confusion
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('020914A','.') and len('020914A') > 10 > True len('020914A') > 10 and string.find('020914A','.') > -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('020914A','.') and len('020914A') > 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 '020914A' and len('020914A') > 10 False >>> len('020914A') > 10 and '.' in '020914A' False -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list
Re: Boolean confusion
Greg Corradini wrote: > > Hello all, > I'm having trouble understanding why the following code evaluates as it > does: > string.find('020914A','.') and len('020914A') > 10 > True len('020914A') > 10 and string.find('020914A','.') > -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('020914A','.') and len('020914A') > 10) evaluate to > false b/c my 'x' is false? And shouldn't the second expression evaluate to > True? The first evaluates to True because len(...) > 10 will return a boolean - which is True, and the semantics of the "and"-operator will return that value. And that precisely is the reason for the -1 in the second expression. y=-1 and it's just returned by the and. in python, and is implemented like this (strict evaluation nonwithstanding): def and(x, y): if bool(x) == True: return y return x Diez -- http://mail.python.org/mailman/listinfo/python-list
Boolean confusion
Hello all, I'm having trouble understanding why the following code evaluates as it does: >>> string.find('020914A','.') and len('020914A') > 10 True >>> len('020914A') > 10 and string.find('020914A','.') -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('020914A','.') and len('020914A') > 10) evaluate to false b/c my 'x' is false? And shouldn't the second expression evaluate to True? Thanks for your help Greg -- View this message in context: http://www.nabble.com/Boolean-confusion-tf3715438.html#a10393362 Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list