On 2009-07-15 10:15, Jean-Michel Pichavant wrote:
Christian Heimes 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

While everyone's trying to tell the OP how to workaround the missing xor
operator, nobody answered the question "why is there no xor operator ?".

If the question was "Why is there no 'or' operator ?", would "because A
or B <=> not(not A and not B)" be a proper answer ?

That's not the only answer the OP has been given. The most compelling answer is that an "xor" keyword cannot be implemented with similar semantics to "and" and "or", in particular short-circuiting and returning one of the actual inputs instead of a coerced bool.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to