Question About Logic In Python

mensanator at mensanator at
Mon Sep 19 04:01:30 CEST 2005

James H. wrote:
> Greetings!  I'm new to Python and am struggling a little with "and" and
> "or" logic in Python.  Since Python always ends up returning a value
> and this is a little different from C, the language I understand best
> (i.e. C returns non-zero as true, and zero as false), is there anything
> I should be aware of given Python's different approach?  Namely any
> pitfalls or neat tricks that make the Python approach cool or save my
> butt.
> Thank you!
> James

Booleans are a subtype of plain integers, so if you use them
in arithmetic expressions, they evaluate to 0 and 1.

>>> def bool():
	print "Boolean algebra"
	print "%9s %9s | %9s %9s %9s" % ('A','B','A and B','A or B','A xor B')
	print "-"*51
	for a in [False,True]:
		for b in [False,True]:
			print "%9s %9s | %9s %9s %9s"  % (a,b,(a and b),(a or b),((a and not
b) or (not a and b)))
	print "Arithmetic"
	print "%9s %9s | %9s %9s %9s" % ('A','B','A + B','A * B','A - B')
	print "-"*51
	for a in [False,True]:
		for b in [False,True]:
			print "%9s %9s | %9s %9s %9s"  % (a,b,(a + b),(a * b),(a - b))

>>> bool()
Boolean algebra
        A         B |   A and B    A or B   A xor B
    False     False |     False     False     False
    False      True |     False      True      True
     True     False |     False      True      True
     True      True |      True      True     False

        A         B |     A + B     A * B     A - B
    False     False |         0         0         0
    False      True |         1         0        -1
     True     False |         1         0         1
     True      True |         2         1         0

More information about the Python-list mailing list