From what I have read, I found that a built-in ternary operator does not exist (I will be happy to know more about it.).
I found the following code as a substitute:
def val():
var = float(raw_input("Age:"))
status = ("Working","Retired")[var>65]
print "You should be:",status
I couldn’t understand how this code works; can anyone explain me how actually the code is working? I am also interested to know why the ternary operator doesn’t exist; any references or links about this will be ore useful.
I’m running Python 2.6.4 on Windows Vista.
Python has a construct that is sort of like the ternary operator in C, et al. It works something like this:
and is equivalent to this C code:
As for how the code you posted works, let’s step through it:
creates a 2-tuple (an immutable list) with the element “Working” at index 0, and “Retired” at index 1.
returns True if var is greater than 65, False if not. When applied to an index, it is converted into 1 (True) or 0 (False). Thus, this boolean value provides an index into the tuple created on the same line.
Why hasn’t Python always had a ternary operator? The simple answer is that Guido van Rossum, the author of Python, didn’t like/didn’t want it, apparently believing that it was an unnecessary construct that could lead to confusing code (and anyone who’s seen massively-nested ternary operators in C can probably agree). But for Python 2.5, he relented and added the grammar seen above.