import math import string variables = {} def resolve(argument): if argument[0] in string.letters: if variables.has_key(argument): return variables[argument] else: print 'Unknown variable:', argument return 0.0 else: return float(argument) operations = {} def add(a,b,last): last = resolve(a) + resolve(b) print last return last operations['+'] = add def subtract(a,b,last): last = resolve(a) - resolve(b) print last return last operations['-'] = subtract def multiply(a,b,last): last = resolve(a) * resolve(b) print last return last operations['*'] = multiply def store(a,b,last): variables[a] = last print a, '=', last return last operations['store'] = store def clear(a,b,last): variables.clear() print 'Variables cleared.' return last operations['clear'] = clear doLoop = True last = 0.0 while doLoop: userInput = raw_input('? ').split(' ') if userInput[0] == 'exit': doLoop = False else: if operations.has_key(userInput[0]): if len(userInput) == 3: args = userInput[1:3]+[last] elif len(userInput) == 2: args = userInput[1:2]+[None, last] else: args = [None, None, last] result = apply(operations[userInput[0]],args) else: print 'Unknown operation.'