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"
```

Difficulty: introductory

Starter code:

def sum_prod(strexpression):
	

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

def sum_prod(strexpression):
    # resisting using the dreaded eval :-)
    # split things up into numbers and operators
    strexpression = strexpression.replace("*", " * ").replace("+", " + ")
    equation = [float(x) if x[0].isdigit() else x for x in strexpression.split()]

    # and calculate the products and then the sums
    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))