James Cunningham wrote: > On 2006-11-10 15:24:50 -0500, Bjoern Schliessmann > <[EMAIL PROTECTED]> said: > >> Marc 'BlackJack' Rintsch wrote: >> >>> No it doesn't -- look again at the example given above. It's >>> legal syntax in Python but doesn't have the semantics implied by >>> the example. >> Sorry, I don't understand -- what is the difference between the >> example as it is and the implied semantics of it? >> >> Regards, >> >> >> Björn > > Yes, I'm not sure myself. > > In [1]: color = "red" > > In [2]: if color == "red" or "blue" or "green": > ...: print 'Works.' > ...: > ...: > Works. > > In [3]: if color == "blue" or "red" or "green": > ...: print 'Works.' > ...: > ...: > Works. > > In [4]: if not color == "blue" or "green": > ...: print 'Works.' > ...: > ...: > Works. > Try testing a little more completely:
>>> for color in ('blue', 'red', 'green', 'yellow'): ... if color == 'blue' or 'red' or 'green': ... print color, "compares true" ... else: ... print color, "compares false" ... blue compares true red compares true green compares true yellow compares true >>> Still think it works? >>> print 'yellow' == 'blue' or 'red' or 'green' red >>> print 'blue' == 'blue' or 'red' or 'green' True >>> Now do you understand why it doesn't work? Think "operator precedence". regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list