[ Foro de Python ]

Problema con codigo

01-Feb-2021 06:20
Invitado (Gallettita70)
0 Respuestas

Buenas a todos!
Me gustaría que me ayuden con este código (código no completo) con el que estoy teniendo problemas.
Lo que me trae problemas es la variable "ans" en la función calculos2, cuando voy a seguir   calculando (cuando presiono "y") e introduzco "el siguiente numero" - como dice el programa - no me hace la cuenta porque dice que la variable ans no esta definida.
CODIGO:
def calculos(num1, op, num2):
   if op == '+':
       ans = num1 + num2
       print(f"{num1} {op} {num2} = {ans}")
   elif op == '-':
       ans = num1 - num2
       print(f"{num1} {op} {num2} = {ans}")
   elif op == '*':
       ans = num1 * num2
       print(f"{num1} {op} {num2} = {ans}")
   elif op == '/':
       ans = num1 / num2
       print(f"{num1} {op} {num2} = {ans}")
   else:
       print("Lo lamento, ese operador no esta disponible :C")
       print("Intentalo de nuevo:")
       print("+\n-\n*\n/\n")
       op = str(input("Elige una operacion: "))
       num2 = int(input("Segundo numero: "))
       if op == '+':
           ans = num1 + num2
           print(f"{num1} {op} {num2} = {ans}")
       elif op == '-':
           ans = num1 - num2
           print(f"{num1} {op} {num2} = {ans}")
       elif op == '*':
           ans = num1 * num2
           print(f"{num1} {op} {num2} = {ans}")
       elif op == '/':
           ans == num1 / num2
           print(f"{num1} {op} {num2} = {ans}")


def calculos2(num1, num2, num3, op2, calculos, ans):
   if op2 == '+':
       ans = num1 + num2
       newans = ans + num3
       print(f"{num3} {op2} {ans} = {newans}")
   elif op2 == '-':
       newans = ans - num3
       print(f"{num3} {op2} {ans} = {newans}")
   elif op2 == '*':
       newans = ans * num3
       print(f"{num3} {op2} {ans} = {newans}")
   elif op2 == '/':
       newans = ans / num3
       print(f"{num3} {op2} {ans} = {newans}")
   else:
       print("Lo lamento, ese operador no esta disponible :C")
       print("Intentalo de nuevo:")
       print("+\n-\n*\n/\n")
       op = str(input("Elige una operacion: "))
       num2 = int(input("Segundo numero: "))
       if op == '+':
           print(f"{num1} {op} {num2} = {ans}")
       elif op == '-':
           ans = num1 - num2
           print(f"{num1} {op} {num2} = {ans}")
       elif op == '*':
           ans = num1 * num2
           print(f"{num1} {op} {num2} = {ans}")
       elif op == '/':
           ans == num1 / num2
           print(f"{num1} {op} {num2} = {ans}")

num1 = float(input("Primer numero: "))

print()

print("+\n-\n*\n/\n")
op = str(input("Elige una operacion: "))
num2 = float(input("Segundo numero: "))

calculos(num1, op, num2)

seguir = 'y'
seguir = str(input("Presione 'y' para seguir calculando, 'n' para hacer otro calculo y 'f' para salir: "))
while True:
   print("+\n-\n*\n/\n")
   op2 = str(input("Elige una operacion: "))
   num3 = float(input("Siguiente numero: ")) #Aquí se me tranca, me sale el error
   calculos2(num1, num2, num3, op2, calculos, ans)
   seguir = 'y'
   seguir = str(input("Presione 'y' para seguir calculando, 'n' para hacer otro calculo y 'f' para salir: "))

El error que me sale: Traceback (most recent call last): File "C:\Users\por aqui toda la ubicacion bla bla bla \Calculator.py", line 102, in <module> calculos2(num1, num2, num3, op2, calculos, ans) NameError: name 'ans' is not defined
Estaría encantado y agradecido si me podrían aportar posibles soluciones o decirme de que mera lo podría solucionar.
Saludos




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)