[Tutor] trouble with function-- trying to check
hyperneato at gmail.com
Wed Mar 14 17:19:25 CET 2007
> This has already been discussed on this thread. == and 'in' are
I did not get that thread somehow. I thought I looked for the original
thread but maybe I did not go back far enough. This thread is great for me -
I am learning much.
" The operators <, >, ==, >=, <=, and != compare the values of two objects.
The objects need not have the same type. If both are numbers, they are
converted to a common type. Otherwise, objects of different types
" The operators in and not in test for set membership"
>(c == c in 'crab')
>(c == c) and (c in 'crab')
(c == c in 'crab') returns a true/false.
The statement (c == c), and the statement (c in 'crab') also returns
but the [ and ] operator that joins (c == c) and (c in 'crab') returns a
value based on the values that precede and follow the [ and ] operator:
" 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."
python >c = 'c'
python >d = 'c'
python >c == d in 'crab'
python >(c == d) and 'crab'
But if I put parentheses around one term like this:
> (c == (c in "crab"))
c in 'crab' returns a true/false first because parentheses are more binding
than comparisons. Then the outer parentheses is evaluated- c in this case is
a <type 'str'> and it compares this value/type to the statement returned by
the innermost set which previously returned a <type 'bool'>
This has already been discussed on this thread. == and 'in' are comparisons.
(c == c in 'crab')
(c == c) and (c in 'crab')
Re: [Tutor] trouble with function-- trying to check
To: Terry Carroll <carroll at tjc.com>
Cc: tutor at python.org
Message-ID: <45F7D0C5.3020107 at tds.net>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Terry Carroll wrote:
> On Wed, 14 Mar 2007, Isaac wrote:
>> a, b, c, or d is a type('str') not boolean which is what (c in "crab")
>> The [in] operator takes presedence, the first 3 times (c in "crab")
>> true and the last returns false; but the strings a, b, c, or d do not ==
>> true or false - therefore the test (c == (c in "crab")) always returns
> The thing is, if the in operator takes precedence than why do
> (c == c in "crab")
> (c == (c in "crab"))
> return different results?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Tutor