Write a function that solves an algebraic expression given as a string. 

* The expression can include only sums and products. 

* The numbers in the expression are in standard notation (NOT scientific).

* In contrast, the function should return a string with the calculated value given in scientific notation with 5 decimal digits. 

# Example:
```python
strexpression = "5 * 4 + 6"
sum_prod(strexpression) = "2.60000e+01"
```

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def sum_prod(strexpression):
	

Solutions:
def sum_prod(strexpression):
	return '%.5e' % eval(strexpression)


def sum_prod(strexpression):
	strexpression = strexpression.replace('*', ' * ').replace('+', ' + ')
	equation = [float(x) if x[0].isdigit() else x for x in strexpression.split()]
	for operator in ['*', '+']:
		while operator in equation:
			pos = equation.index(operator)
			equation[pos - 1] = equation[pos - 1] * equation[pos + 1] if operator == '*' else equation[pos - 1] + equation[pos + 1]
			del equation[pos:pos + 2]
	return '{:.5e}'.format(float(equation[0]))


sum_prod = lambda ex: '{:.5e}'.format(sum((eval(i) for i in ex.split('+'))))


from functools import reduce

def sum_prod(strexpression):
	to_sum = [expr.split('*') for expr in strexpression.split('+')]
	total = sum((reduce(lambda result, y: result * float(y), product_, 1.0) for product_ in to_sum))
	return f'{total:.5e}'


__import__('sys').setrecursionlimit(2000)

def sum_prod(strexpression):
	return f'{eval(strexpression):.5e}'


sum_prod = lambda s: '%.5e' % eval(s)


from decimal import *

def sum_prod(strexpression):
	splitByPlus = strexpression.split('+')
	for x in range(0, len(splitByPlus)):
		splitByPlus[x] = multiplyAll(splitByPlus[x])
	result = addAll(splitByPlus)
	return '{:.5e}'.format(result)

def addAll(exps):
	sum = 0.0
	for i in exps:
		sum += float(i)
	return sum

def multiplyAll(exps):
	exps = exps.split('*')
	result = 1.0
	for j in exps:
		result *= float(j)
	return result


import sys
sys.setrecursionlimit(2000)

def sum_prod(strexpression):
	return '{:.5e}'.format(eval(strexpression))