On Fri, 02 Apr 2010 07:05:49 -0700, Steve Howell wrote: >> How is the ternary operator "not really ternary, it's binary"? It >> requires three arguments, not two, which makes it ternary. In Python >> syntax: >> > Of course, I understand that the ternary operator has three arguments, > but it only has two possible outcomes.
But the number of outcomes is not what the "binary" in binary operator refers to. It's the number of arguments. > You asked me to elaborate on the "Tyranny of Three." Let's say you have > three possible outcomes. > > In some languages you would write something like this: > > mark = (rolls == 1) && (pins == 10) ? 'strike' : > (rolls == 2) && (pins == 10) ? 'spare' : > 'normal' Not if you held a gun to my head *wink* > Many people consider the above very ugly, so they write it like so: [snip multiple alternative ways of choosing between three alternatives] All very interesting, but I don't see why you are singling out three alternatives as particularly difficult. Not all choices between three possible results are hard to code: choice = some_integer % 3 # returns 0, 1, or 2. and choosing between two results isn't necessarily simple either, e.g. the rules of protocol. Deciding which of two people outrank the other can be *very* complicated. Does a king outrank a pope? What about a president? Does a prince of some two-bit speck of dirt outrank a senator of a superpower? People have worked out (by which I mean, "made up") rules for all these and more, and they still can't always agree on who ranks who. International negotiations have floundered and collapsed because the parties couldn't agree which ambassador got the chair at the head of the table nearest the door... You are absolutely right to say that some problems don't have an elegant solution, but I think you're wrong to single out "three" as special. -- Steven -- http://mail.python.org/mailman/listinfo/python-list