[Tutor] Please critique my temperature_conversion.py (original) (raw)

Dick Moores rdm at rcblue.com
Tue Jul 13 16:33:53 CEST 2004


Oops! forgot one line. Left out this line:

temp_unit = temp_unit.upper() (which enables user to enter lower-case c and f, as in 70f and 45c)

in this section:

make sure we know the unit

 temp_unit = temp_unit.upper()
 if not (temp_unit in ['F', 'C']):
     print "Unknown unit (%s)." % temp_unit
     continue

Sorry.

So the script now is:

#temperature_conversion.py """ temperature conversion: Fahrenheit <---> Celsius. User enters temperature as a number followed by a unit of either F or C. The program uses the variable "number" to hold this original number, and the variable "unit" to hold the original F or the C. """

print """ TempConverter.py

   TempConverter will convert Fahrenheit to Celsius or Celsius to 

Fahrenheit. Enter a temperature as a value followed by a unit (F or C), such as 70F, 70 f, -12.47C, 34c, etc. To exit program, enter exit, quit, stop, q, or x """

import sys, time

def exit(): print "Thank you for using TempConverter. TempConverter will now close" time.sleep(1.1) # to provide the user with enough time to read the message

while True: temperature = ""

 # for exiting via ^C or ^D
 try:
     temperature = raw_input('Temperature: ').strip()
 except (TypeError, EOFError):
     break

 if temperature.lower() in ["exit", "quit", "stop", "q", "x"]:
     break

 # make sure there is input at all, i.e., catch ""; ("   " already 

stripped) try: temp_unit = temperature[-1] temp_value = temperature[:-1] except: # input is too short print "Wrong input! Specify a value followed by a unit." continue

 # make sure we know the unit
 temp_unit = temp_unit.upper()
 if not (temp_unit in ['F', 'C']):
     print "Unknown unit (%s)." % temp_unit
     continue

 # make sure the value is a number
 try:
     temp_value = float(temp_value)
 except:
     print "The value you specified (%s) is not a number!" % temp_value
     continue
 #calculate new value now that sure have good value and unit
 if temp_unit == "F":
     new_value = 5/9. * (temp_value - 32)
     print "%.2fF is %.2fC" % (temp_value, new_value)
 else:
     new_value = 9/5. * temp_value + 32
     print "%.2fC is %.2fF" % (temp_value, new_value)

exit()



More information about the Tutor mailing list