Holy crap, a year and no update. In an attempt to get things going again, here's a simple post of something I keep looking up online.

Python has no ternary operator (?: in C++)

Instead, use an and-or construction:

In [1]: True and 'a' or 'b'

Out[1]: 'a'

In [2]: False and 'a' or 'b'

Out[2]: 'b'

Replace True and False with the condition:

In [3]: (1==1) and 'a' or 'b'

Out[3]: 'a'

In [4]: (1==0) and 'a' or 'b'

Out[4]: 'b'

Edit:

One failure of this method is then 'a' or 'b' can evaluate as boolean values. Examples of this behavior:

In [1]: True and True or False

Out[1]: True

In [2]: True and False or True

Out[2]: True

In [3]: True and 1 or 0

Out[3]: 1

In [4]: True and 0 or 1

Out[4]: 1

In [5]: True and 'a' or ''

Out[5]: 'a'

In [6]: True and '' or 'a'

Out[6]: 'a'

So you see that if the first return value evaluates as false, the second value is returned. I'll post a solution or workaround later, when I find one.

## 1 comment:

http://diveintopython.org/power_of_introspection/and_or.html#d0e9975

Workaround!

Post a Comment