Advertisement
bojjenclon

Python Unit Converter

Sep 22nd, 2011
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.46 KB | None | 0 0
  1. class UnitConversion:
  2.     units = [ "mm", "cm", "dm", "m", "dam", "hm", "km", "in", "ft", "yd", "mi" ]
  3.    
  4.     metersInInch = 0.0254
  5.     metersInFoot = 0.3048
  6.     metersInYard = 0.9144
  7.     metersInMile = 1609.344
  8.    
  9.     def metersToMillimeters( self, meters ):
  10.         return( meters * 1000 )
  11.        
  12.     def millimetersToMeters( self, millimeters ):
  13.         return( millimeters / 1000 )
  14.        
  15.     def metersToCentimeters( self, meters ):
  16.         return( meters * 100 )
  17.        
  18.     def centimetersToMeters( self, centimeters ):
  19.         return( centimeters / 100 )
  20.        
  21.     def metersToDecimeters( self, meters ):
  22.         return( meters * 10 )
  23.        
  24.     def decimetersToMeters( self, decimeters ):
  25.         return( decimeters / 10 )
  26.        
  27.     def metersToDecameters( self, meters ):
  28.         return( meters / 10 )
  29.        
  30.     def decametersToMeters( self, decameters ):
  31.         return( decameters * 10 )
  32.        
  33.     def metersToHectometers( self, meters ):
  34.         return( meters / 100 )
  35.        
  36.     def hectometersToMeters( self, hectometers ):
  37.         return( hectometers * 100 )
  38.        
  39.     def metersToKilometers( self, meters ):
  40.         return( meters / 1000 )
  41.        
  42.     def kilometersToMeters( self, kilometers ):
  43.         return( kilometers * 1000 )
  44.    
  45.     def metersToInches( self, meters ):
  46.         return( meters * self.metersInInch )
  47.        
  48.     def inchesToMeters( self, inches ):
  49.         return( inches / self.metersInInch )
  50.    
  51.     def metersToFeet( self, meters ):
  52.         return( meters * self.metersInFoot )
  53.    
  54.     def feetToMeters( self, feet ):
  55.         return( feet / self.metersInFoot )
  56.        
  57.     def metersToYards( self, meters ):
  58.         return( meters * self.metersInYard )
  59.    
  60.     def yardsToMeters( self, yards ):
  61.          return( yards / self.metersInYard )
  62.    
  63.     def metersToMiles( self, meters ):
  64.         return( meters * self.metersInMile )
  65.        
  66.     def milesToMeters( self, miles ):
  67.         return( miles / self.metersInMile )
  68.    
  69.     functions = {   'mtomm': metersToMillimeters,
  70.                     'mmtom': millimetersToMeters,
  71.                     'mtocm': metersToCentimeters,
  72.                     'cmtom': centimetersToMeters,
  73.                     'mtodm': metersToDecimeters,
  74.                     'dmtom': decimetersToMeters,
  75.                     'mtodam': metersToDecameters,
  76.                     'damtom': decametersToMeters,
  77.                     'mtohm': metersToHectometers,
  78.                     'hmtom': hectometersToMeters,
  79.                     'mtokm': metersToKilometers,
  80.                     'kmtom': kilometersToMeters,
  81.                     'mtoin': metersToInches,
  82.                     'intom': inchesToMeters,
  83.                     'mtoft': metersToFeet,
  84.                     'fttom': feetToMeters,
  85.                     'mtoyd': metersToYards,
  86.                     'mtoyd': yardsToMeters,
  87.                     'mtomi': metersToMiles,
  88.                     'mitom': milesToMeters  }
  89.    
  90.     def convert( self, userInput ):
  91.         values = userInput.split()
  92.        
  93.         if( len( values ) != 3 ):
  94.             return( "Error: You entered an incorrent number of values" )
  95.            
  96.         try:
  97.             values[0] = float( values[0] ) if '.' in values[0] else int( values[0] )
  98.         except ValueError:
  99.             return( "Error: The first value must be a number" )
  100.        
  101.         if( values[1] == values[2] ):
  102.             return( values[0] )
  103.        
  104.         if( not values[1] in self.units ):
  105.             return( "Error: The second value is not a known unit" )
  106.            
  107.         if( not values[2] in self.units ):
  108.             return( "Error: The third value is not a known unit" )
  109.        
  110.         function = values[1] + "to" + values[2]
  111.        
  112.         if( not function in self.functions ):
  113.             return( "Error: This conversion is currently not supported" )  
  114.        
  115.         return( self.functions[function]( self, values[0] ) )
  116.        
  117. def main():
  118.     uc = UnitConversion()
  119.    
  120.     print( "Input should be formated like this:\n<value> <original unit> <new unit>\nSpaces are mandatory!" )
  121.    
  122.     userInput = raw_input()
  123.    
  124.     answer = uc.convert( userInput )
  125.    
  126.     print( answer )
  127.    
  128. if __name__ == '__main__':
  129.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement