Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UnitConversion:
- units = [ "mm", "cm", "dm", "m", "dam", "hm", "km", "in", "ft", "yd", "mi" ]
- metersInInch = 0.0254
- metersInFoot = 0.3048
- metersInYard = 0.9144
- metersInMile = 1609.344
- def metersToMillimeters( self, meters ):
- return( meters * 1000 )
- def millimetersToMeters( self, millimeters ):
- return( millimeters / 1000 )
- def metersToCentimeters( self, meters ):
- return( meters * 100 )
- def centimetersToMeters( self, centimeters ):
- return( centimeters / 100 )
- def metersToDecimeters( self, meters ):
- return( meters * 10 )
- def decimetersToMeters( self, decimeters ):
- return( decimeters / 10 )
- def metersToDecameters( self, meters ):
- return( meters / 10 )
- def decametersToMeters( self, decameters ):
- return( decameters * 10 )
- def metersToHectometers( self, meters ):
- return( meters / 100 )
- def hectometersToMeters( self, hectometers ):
- return( hectometers * 100 )
- def metersToKilometers( self, meters ):
- return( meters / 1000 )
- def kilometersToMeters( self, kilometers ):
- return( kilometers * 1000 )
- def metersToInches( self, meters ):
- return( meters * self.metersInInch )
- def inchesToMeters( self, inches ):
- return( inches / self.metersInInch )
- def metersToFeet( self, meters ):
- return( meters * self.metersInFoot )
- def feetToMeters( self, feet ):
- return( feet / self.metersInFoot )
- def metersToYards( self, meters ):
- return( meters * self.metersInYard )
- def yardsToMeters( self, yards ):
- return( yards / self.metersInYard )
- def metersToMiles( self, meters ):
- return( meters * self.metersInMile )
- def milesToMeters( self, miles ):
- return( miles / self.metersInMile )
- functions = { 'mtomm': metersToMillimeters,
- 'mmtom': millimetersToMeters,
- 'mtocm': metersToCentimeters,
- 'cmtom': centimetersToMeters,
- 'mtodm': metersToDecimeters,
- 'dmtom': decimetersToMeters,
- 'mtodam': metersToDecameters,
- 'damtom': decametersToMeters,
- 'mtohm': metersToHectometers,
- 'hmtom': hectometersToMeters,
- 'mtokm': metersToKilometers,
- 'kmtom': kilometersToMeters,
- 'mtoin': metersToInches,
- 'intom': inchesToMeters,
- 'mtoft': metersToFeet,
- 'fttom': feetToMeters,
- 'mtoyd': metersToYards,
- 'mtoyd': yardsToMeters,
- 'mtomi': metersToMiles,
- 'mitom': milesToMeters }
- def convert( self, userInput ):
- values = userInput.split()
- if( len( values ) != 3 ):
- return( "Error: You entered an incorrent number of values" )
- try:
- values[0] = float( values[0] ) if '.' in values[0] else int( values[0] )
- except ValueError:
- return( "Error: The first value must be a number" )
- if( values[1] == values[2] ):
- return( values[0] )
- if( not values[1] in self.units ):
- return( "Error: The second value is not a known unit" )
- if( not values[2] in self.units ):
- return( "Error: The third value is not a known unit" )
- function = values[1] + "to" + values[2]
- if( not function in self.functions ):
- return( "Error: This conversion is currently not supported" )
- return( self.functions[function]( self, values[0] ) )
- def main():
- uc = UnitConversion()
- print( "Input should be formated like this:\n<value> <original unit> <new unit>\nSpaces are mandatory!" )
- userInput = raw_input()
- answer = uc.convert( userInput )
- print( answer )
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement