I have attached a copy of the originally-posted Python code and also have
attached an IDLE session based on that code, which seems instructive.
(Copying and pasting the IDLE session into the email message seems to mess
up the indentation.)
But Zachary's suggestions for rewriting the original Python to attain the
intended result are very helpful.

On Thu, Oct 28, 2010 at 8:20 AM, Zachary Pincus <zachary.pin...@yale.edu>wrote:

>
> On Oct 28, 2010, at 11:08 AM, Ronald Oussoren wrote:
>
>
>> On 28 Oct, 2010, at 16:21, Dan Ross wrote:
>>
>>  I don't think this is Mac specific, but I wonder if someone could explain
>>> why these two groups of code behave differently:
>>>
>>> [code]
>>>
>>> colors = ['red', 'green', 'blue', 'orange', 'fuscia', 'black', 'white']
>>>
>>> list_of_matches = []
>>> for x in colors:
>>>    if x == 'red' or 'green' or 'blue':
>>>
>>>
>> This parses as:
>>
>>        if x == ('red' or 'green' or blue'):
>>
>
> This would always lead to the if-test failing: ('red' or 'green' or 'blue')
> evaluates to True, and x != True. What's observed is the if-test always
> passing... As the equality operator is higher-precedence than boolean
> operators, and equal precedence operators group left-to-right, the above
> parses as:
>
>    if (((x == 'red') or 'green') or 'blue'):
>
> noting that non-empty strings (like 'green') evaluate as True in an
> if-test, this will test if x == 'red', and if not, it will go on to testing
> if 'green' evaluates to True (which it does), and so forth.
>
> Dan, you could fix your code as:
>    if x == 'red' or x == 'green' or x == 'blue':
>
> But this is better:
>    if x in ('red', 'green', 'blue'):
>
> and this scales best:
>    good_colors = set(['red', 'green', 'blue'])
>    if x in good_colors:
>
>
> Zach
>
>
>
>
>
>
>  Ronald
>> _______________________________________________
>> Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
>> http://mail.python.org/mailman/listinfo/pythonmac-sig
>> unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG
>>
>
> _______________________________________________
> Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
> http://mail.python.org/mailman/listinfo/pythonmac-sig
> unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG
>

Attachment: Oct28.py
Description: Binary data

Attachment: IdleSessionOct28
Description: Binary data

_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to