Python - Ayuda Expresionesrecursivas

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 21 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda Expresionesrecursivas

Publicado por Antonio (2 intervenciones) el 06/12/2020 12:40:05
Buenas tardes a todos. Necesitaría algo de ayuda con este problema de expresiones recursivas. Me plantean que desarrolle una funcion que tome como parámetro una tupla que representa una expresión aritmética simple y devuelva el resultado (numérico) de su evaluación.

Se considera una expresión aritmética simple a nn número (int o float) o una tupla de 3 elementos, de los cuales el primero y el tercero son expresiones aritméticas simples y el segundo es una string con uno de los valores '+', '-', '*', '/', que representan los operadores aritméticos correspondientes.

Ejemplos:
(10, '-', (5, '*', 3))

Por ahora solo he podido atacarlo de la siguiente forma, pero solo me devuelve la tupla original como resultado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def evaluate(expresion):
    result = 0
    if type(expresion)==int or float:
        return expresion
 
    elif type(expresion)==tuple:
        if expresion[1]=='+':
            op = result + evaluate(expresion[0]+expresion[2])
 
        elif test_exp[1]=='-':
            op= result +evaluate(expresion[0]-expresion[2])
 
        elif expresion[1]=='*':
            op= result +evaluate(expresion[0]*expresion[2])
 
        elif expresion[1]=='/':
            op= result +evaluate(expresion[0]/expresion[2])
 
    return evaluate(op)

Agradecería cualquier tipo de ayuda o explicación
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda Expresionesrecursivas

Publicado por algoritmo (245 intervenciones) el 07/12/2020 19:01:30
Hola

Espero que te sirva ):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def evaluate(expresion):
    if type(expresion)==int or type(expresion) == float:
        return expresion
 
    elif type(expresion)==tuple:
        if expresion[1]=='+':
            op = evaluate(expresion[0])+evaluate(expresion[2])
        elif expresion[1]=='-':
            op= evaluate(expresion[0])-evaluate(expresion[2])
        elif expresion[1]=='*':
            op = evaluate(expresion[0])*evaluate(expresion[2])
        elif expresion[1]=='/':
            op= evaluate(expresion[0])/evaluate(expresion[2])
        else:
            op = 'error'
 
    return op
 
print(evaluate((10, '-', (5, '*', 3))))
print(evaluate(((10, '/', 5), '-', (5, '*', 3))))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar