On Tue, 19 Apr 2011 16:26:50 +1000, Chris Angelico wrote: > On Tue, Apr 19, 2011 at 4:23 PM, Kushal Kumaran > <kushal.kumaran+pyt...@gmail.com> wrote: >>> if a + b + c + d != 1: >>> raise ValueError("Exactly one of a, b, c or d must be true.") >>> >>> >> Unless you're sure all of a, b, c, and d are boolean values, an int >> with a negative value slipping in could result in the sum equaling 1, >> but more than one of the variables evaluating to True in boolean >> contexts. > > If they're all expressions, then you can easily guarantee that.
*raises eyebrow* Either of these should do the job: sum(map(bool, (a, b, c, d))) sum(bool(x) for x in (a, b, c, d)) but I don't see how (arbitrary expression) + (another expression) + ... + (last expression) can have any guarantees applied. I mean, you can't even guarantee that they won't raise an exception. Can you explain what you mean? -- Steven -- http://mail.python.org/mailman/listinfo/python-list