Boolean confusion

Greg Corradini gregcorradini at gmail.com
Wed May 9 09:02:58 EDT 2007


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('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 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.




More information about the Python-list mailing list