On Jul 15, 12:08 am, Christian Heimes <li...@cheimes.de> wrote: > Chris Rebert wrote: > > Using the xor bitwise operator is also an option: > > bool(x) ^ bool(y) > > I prefer something like: > > bool(a) + bool(b) == 1 > > It works even for multiple tests (super xor): > > if bool(a) + bool(b) + bool(c) + bool(d) != 1: > raise ValueError("Exactly one of a, b, c and d must be true") > > Christian
"if bool(a) + bool(b) + bool(c) + bool(d) != 1:" is not equivalent to xor. 1 xor 1 xor 1 = 1 xor (1 xor 1) = 1 xor 0 = 1 (or = (1 xor 1) xor 1 = 0 xor 1 = 1 if you assicate to the left) -- http://mail.python.org/mailman/listinfo/python-list