Loops with Input

You can obtain input within a loop. For example:
      while True:
          celsius = float(raw_input('Temperature in degrees Celsius: '))
          fahrenheit = celsius * 9 / 5 + 32
          print celsius, 'degrees Celsius is', fahrenheit, 'degrees Fahrenheit'
    
The above loop will keep asking the user for a temperature, and coverting it to Fahrenheit. That's very nice, but the loop will run while True, which means forever. How do we get out?

The user could always stop the program by typing Control-C, but this is ugly. Here are a couple of solutions:

Exit on special input

We could ask the user to enter a special input, to stop the program:
      while True:
          celsius = float(raw_input('Temperature in degrees Celsius, or -999 to stop: '))
          if celsius == -999:
              break
          fahrenheit = celsius * 9 / 5 + 32
          print celsius, 'degrees Celsius is', fahrenheit, 'degrees Fahrenheit'
    

Exit on empty input

We could also ask the user to enter an empty line, to stop the program:
      while True:
          reply = raw_input('Temperature in degrees Celsius, or <Enter> to stop: ')
          if reply == '':
              break
          celsius = float(reply)
          fahrenheit = celsius * 9 / 5 + 32
          print celsius, 'degrees Celsius is', fahrenheit, 'degrees Fahrenheit'
    
Notice that we need a temporary string reply to check for an empty line. We only try to convert non-empty strings into a float. Consider the previous program:
      while True:
          celsius = float(raw_input('Temperature in degrees Celsius, or -999 to stop: '))
          if celsius == -999:
              break
          fahrenheit = celsius * 9 / 5 + 32
          print celsius, 'degrees Celsius is', fahrenheit, 'degrees Fahrenheit'
    
If the user had just pressed the <Enter> key, and we had tried to convert that empty string into celsius, the program would have crashed with a ValueError.