Advertisement
teslariu

cuadratica excep

Oct 9th, 2021
73
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. """
  2. Script que calcula las raíces de una ecuación cuadrática en el campo
  3. de los nros reales
  4. Ej:
  5. >>> Ingrese el tèrmino cuadrático: 1
  6. >>> Ingrese el término lineal: 10
  7. >>> Ingrese el término independiente: 5
  8. >>> No existen raíces en el campo de los nros reales
  9. """
  10. import datetime
  11.  
  12.  
  13.  
  14. def ingresar_datos(n):
  15.     if n  == "a":
  16.         cadena = f"Ingrese el término cuadrático {n}: "
  17.     elif n == "b":
  18.         cadena = f"Ingrese el término lineal {n}: "
  19.     else:
  20.         cadena = f"Ingrese el término independiente {n}: "
  21.        
  22.     while True:
  23.         try:
  24.             numero = float(input(cadena))
  25.         except ValueError:
  26.             print("Error, debe ingresar un número: ")
  27.         else:
  28.             if n=="b" or "n"=="c":
  29.                 return numero
  30.             elif numero:
  31.                 return numero
  32.             else:
  33.                 print("a debe ser diferente de cero")
  34.            
  35.  
  36.  
  37.  
  38. def calcular_raices(a,b,c):
  39.     from math import sqrt
  40.     delta = b**2 - 4*a*c
  41.  
  42.     if not delta:
  43.         raices = -1*b / (2*a)
  44.         return raices
  45.     elif delta > 0:
  46.         raiz1 = (-1*b + sqrt(delta)) / (2*a)
  47.         raiz2 = (-1*b - sqrt(delta)) / (2*a)
  48.         return [raiz1, raiz2]
  49.     else:
  50.         return "No existen raices en el campo de los nros. reales"
  51.  
  52.  
  53. def grabar_datos(a,b,c,raices):
  54.     # escribo fecha y hora:
  55.     f.write(datetime.datetime.now().strftime("%d/%m/%y %H:%M:%S") + "\n")
  56.     f.write("Parámetros de la parábola:\n")
  57.     f.write(f"Término cuadrático (a): {a}\n")
  58.     f.write(f"Término lineal (b): {b}\n")
  59.     f.write(f"Término independiente (c): {c}\n")
  60.     if isinstance(raices, float):
  61.         f.write("Existe una raíz: {:.3f}\n".format(raices))
  62.     elif isinstance(raices, list):
  63.         f.write("Existen dos raíces: {:.3f} y {:.3f}\n".format(raices[0], raices[1]))
  64.     else:
  65.         f.write(raices + "\n")
  66.     f.write(30*"-"+"\n")
  67.    
  68.    
  69.    
  70.  
  71. def imprimir(raices):
  72.     if isinstance(raices, float):
  73.         print("Existe una raíz: {:.3f}".format(raices))
  74.     elif isinstance(raices, list):
  75.         print("Existen dos raíces: {:.3f} y {:.3f}".format(raices[0], raices[1]))
  76.     else:
  77.         print(raices)
  78.  
  79.  
  80. ###  main  ##############
  81. print("Script que calcula raíces de una ec.cuadrática en R")
  82.  
  83. while True:
  84.     a = ingresar_datos("a")
  85.     b = ingresar_datos("b")
  86.     c = ingresar_datos("c")
  87.    
  88.     raices = calcular_raices(a,b,c)
  89.     f = open("cuadratica.txt", "a") # si el archivo no existe, lo crea
  90.     grabar_datos(a,b,c,raices)
  91.     imprimir(raices)
  92.  
  93.     opcion = input("\nPresione cualquier tecla para continuar(o '1' para salir): ")
  94.     if opcion == "1":
  95.         print("Gracias por usar este programa...")
  96.         f.close()
  97.         break
  98.  
Advertisement
RAW Paste Data Copied
Advertisement