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.
AgradecerÃa cualquier tipo de ayuda o explicació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


0