Start New Discussion within our Software Development Community

Do you know that there is clean way of doing what C-language ternary operator ? does in Python's recent versions.

It is if with special twist. The syntax is:

'The value if true' if <condition> else 'Value when false'

Values can be any type. You can put this structure to replace single value.

In this classic number guess game version we practise using the structure even in a nested way. This is not maybe so advisable general way, as it is less clear than many print statements in normal if statement.

Anyway, this came first to my mind as demonstration of this, as I learned about this statement form myself only today. I have used and and or to simulate the form before.

## This program is programmed little special way to demonstrate Python ternary if

from __future__ import print_function ## for python 2.6 Python 3 style print function
from random import randint
from sys import version
print ('Your python is:\n',version)
if version[0]=='3': raw_input = input

secret = randint(0,100)
found = False
tries=0
print('What number between 0 and 100 I am thinking')
while not found:
    try:
        tries += 1
        guess=int(raw_input('%i. try:' % tries))
        found = guess == secret
        print ('Too small' if guess < secret
               else ('You found it with %i tries! It was %i.' % (tries,secret) if found
                     else 'Too big')
               )
    except ValueError:
        print('Input must be number')

Specialties:
IT/Science/Contracts/Religious translation/interpreting FIN-ENG-FIN
Python programming

The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.