I appreciate the effort that people have made, but I'm not impressed with any of the answers. For one thing, xor should be able to accept an arbitrary number of input arguments (not just two), and should return True if and only if the number of input arguments that evaluate to True is odd (see www.mathworld.com article on xor). Here's my code:
def xor(*args): """xor accepts an arbitrary number of input arguments, returning True if and only if bool() evaluates to True for an odd number of the input arguments.""" result= False for arg in args: if bool(arg): result= not result return result MRAB-2 wrote: > > Ethan Furman wrote: >> Robert Kern wrote: >>> On 2009-07-14 14:56, Dr. Phillip M. Feldman wrote: >>> >>>> != does do what I want, except that it doesn't indicate to someone >>>> reading >>>> the code that the operands are being treated as logicals. >>>> (Readability is >>>> supposed to be one of the major selling points of Python). But, this >>>> is >>>> probably good enough. >>> >>> >>> In the words of those greater than myself, "Not every one-liner needs >>> to be in the standard library." >>> >>> def xor(a, b): >>> return bool(a) != bool(b) >>> >> >> Let's see... >> >> and returns the last object that is "true" >> or returns the first object that is "true" >> >> so should xor return the only object that is "true", else False/None? >> >> def xor(a, b) >> if a and b: >> return None >> elif a: >> return a >> elif b: >> return b >> else: >> return None >> > How about: > > def xor(a, b): > return not b and a or not a and b > -- > http://mail.python.org/mailman/listinfo/python-list > > -- View this message in context: http://www.nabble.com/missing-%27xor%27-Boolean-operator-tp24485116p24491580.html Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list