[Tutor] Logical Operaor

Brian van den Broek broek at cc.umanitoba.ca
Fri Apr 7 02:19:42 CEST 2006


Kaushal Shriyan said unto the world upon 06/04/06 08:06 AM:
> Hi
> 
> I am referring to http://www.ibiblio.org/obp/thinkCSpy/chap04.htm
> about Logical operators
> 
> I didnot understood
> 
> 
>>>> x = 5
>>>> x and 1
> 
> 1
> 
>>>> y = 0
>>>> y and 1
> 
> 0
> 
> How 5 and 1 means 1 and 0 and 1 means 0
> 
> Thanks
> 
> Regards
> 
> Kaushal

Kaushal,

as Jason pointed out, any non-zero number evaluates to True. Also, any 
non-empty list, string, dict, etc. Witness:

 >>> bool(6)
True
 >>> bool(0)
False
 >>> bool("non-empty string")
True
 >>> bool('    ')
True
 >>> bool('')
False


The other part of the puzzle is that 'and' and 'or' are 
"short-circuit" operators. 'or' works like this: return the first 
value flanking the or if that evaluates to True. Otherwise return the 
second value:

 >>> 42 or 0
42
 >>> 0 or 42
42
 >>> 7 or 42
7
 >>> 42 or 7
42
 >>> 0 or []
[]
 >>> [] or 0
0
 >>>

'and' works similarly. It returns the first value if that evaluates to 
False. Otherwise, it returns the second:

 >>> 42 and 7
7
 >>> 7 and 42
42
 >>> 0 and []
0
 >>> [] and 0
[]
 >>>

HTH,

Brian vdB


More information about the Tutor mailing list