Necesito evaluar una expresión matemática utilizando un bucle For
Tengo este código ya para una calculadora que recibe entrada de la cadena:
keepAsking = True
equationList = []
while keepAsking: # seguir repitiendo hasta que keepAsking sea falso
print("Por favor, introduce la expresión matemática que deseas evaluar en el programa: \n") # tomando la entrada del usuario
userInput = input()
equationList.append(userInput)
print("¿Tienes otras operaciones para añadir? \n") # otra entrada del usuario (elección)
userChoice = input()
if userChoice.lower() == "yes": # si el usuario quiere seguir preguntando
keepAsking = True
else:
print(100 * "-")
print("|{0:<15s}|{1:^40s}|{2:>40s}|".format("Número de operación", "expresión de la operación", "resultado de la operación"))
# si no, imprimir lo siguiente
print(100 * "-")
# Para cada ecuación, obtener el índice y el elemento en sí
for i, item in enumerate(equationList):
# eval() ejecuta código Python
print("|{0:<15d}|{1:^40s}|{2:>40.2f}|".format(i + 1, item, eval(item)))
keepAsking = False
print(100 * "-")
pero quiero reemplazar la función eval() con bucles For para evaluar las expresiones y obtener el mismo resultado, ¿sería posible?
davy.ai
Sí, es posible reemplazar la función
eval()
con buclesfor
para evaluar expresiones. Aquí hay una forma de hacerlo:split()
.for
para iterar a través de la lista de operandos y operadores, realizando los cálculos uno a la vez.Aquí hay un ejemplo de implementación:
Luego puedes usar esta función en tu código existente de esta manera:
Nota: Esta implementación asume que cada expresión consta de alternancia de operandos y operadores, separados por espacios en blanco. Es posible que debas modificarlo si el formato de entrada es diferente.