RE: Challenge (1) CLI Calculator 12-16-2015, 03:59 PM
#11
| Challenge (1) CLI Calculator filter_list | |
RE: Challenge (1) CLI Calculator 02-16-2016, 06:27 PM
#12
Code:
import operator as op
ops={'+': op.add,'-': op.sub,'*': op.mul,'/': op.div,'^': op.pow,'%': op.mod}
def parse(equation) :
operators = ["^", "*", "/", "%", "+", "-"]
result = {}
for op in operators[::-1] :
if op in equation :
result['operator'] = op
result['operands'] = [
parse(equation[:equation.find(op)]),
parse(equation[equation.find(op)+1:])
]
return result
return equation.strip()
def evaluate(equation):
parsed = parse(equation)
def _eval(parsed_eq) :
if type(parsed_eq) is str and parsed_eq.isdigit() :
return int(parsed_eq)
else :
operator = parsed_eq['operator']
operands = parsed_eq['operands']
return ops[operator](_eval(operands[0]), _eval(operands[1]))
return _eval(parsed)
exp = '3 + 4 * 5'
print parse(exp)
print evaluate(exp)
RE: Challenge (1) CLI Calculator 02-17-2016, 04:18 AM
#13
(02-16-2016, 06:27 PM)emad.shaaban92 Wrote:Code:import operator as op ops={'+': op.add,'-': op.sub,'*': op.mul,'/': op.div,'^': op.pow,'%': op.mod} def parse(equation) : operators = ["^", "*", "/", "%", "+", "-"] result = {} for op in operators[::-1] : if op in equation : result['operator'] = op result['operands'] = [ parse(equation[:equation.find(op)]), parse(equation[equation.find(op)+1:]) ] return result return equation.strip() def evaluate(equation): parsed = parse(equation) def _eval(parsed_eq) : if type(parsed_eq) is str and parsed_eq.isdigit() : return int(parsed_eq) else : operator = parsed_eq['operator'] operands = parsed_eq['operands'] return ops[operator](_eval(operands[0]), _eval(operands[1])) return _eval(parsed) exp = '3 + 4 * 5' print parse(exp) print evaluate(exp)
I like it!







![[+]](https://sinister.li/images/modern/collapse_collapsed.png)