Advertisement
teslariu

cuad_save

Jul 31st, 2021
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.91 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """Script que calcula las raices de una ecuaciòn cuadràtica en el
  4. campo de los nros reales
  5.  
  6. raiz1,2 = (-b +/- raiz(delta)) / (2*a)
  7. delta = b**2 - 4*a*c
  8.  
  9. """
  10. import datetime
  11.  
  12. def ingresar_datos():
  13.     while True:
  14.         try:
  15.             a = float(input("Ingrese el término cuadrático a: "))
  16.         except ValueError:
  17.             print("Debe ingresar un numero")
  18.         else:
  19.             if a != 0:
  20.                 break
  21.             else:
  22.                 print("Debe ingresar un nro distinto de cero")
  23.    
  24.     while True:
  25.         try:
  26.             b = float(input("Ingrese el término lineal b: "))
  27.         except ValueError:
  28.             print("Debe ingresar un numero")
  29.         else:
  30.             break
  31.    
  32.     while True:
  33.         try:
  34.             c = float(input("Ingrese el término independiente c: "))
  35.         except ValueError:
  36.             print("Debe ingresar un numero")
  37.         else:
  38.             return [a,b,c]
  39.    
  40.    
  41. def guardar_datos(a,b,c,raices):
  42.     # abro el archivo para guaradar datos
  43.     try:
  44.         f = open("cuadratica.txt", "a")
  45.     except FileNotFoundError:
  46.         f = open("cuadratica.txt", "x")
  47.        
  48.     # escribo la fecha y hora como encabezado
  49.     f.write(datetime.datetime.now().strftime('%d/%m/%y %H:%M:%S') + '\n')
  50.     f.write("Parámetros de la parábola:\n")
  51.     f.write(f"Término cuadrático (a): {a}\n")
  52.     f.write(f"Término lineal (b): {b}\n")
  53.     f.write(f"Término independiente (c): {c}\n")
  54.    
  55.     if isinstance(raices,list):
  56.         f.write("Existen dos raíces: {:.3f}  y {:.3f}\n".format(raices[0],raices[1]))
  57.    
  58.     elif isinstance(raices, float):
  59.         f.write("Existe una sola raíz: {:.3f}\n".format(raices))
  60.        
  61.     else:
  62.         f.write(raices + "\n")
  63.     f.close()
  64.  
  65.    
  66. def calcular_raices(a,b,c):
  67.     from math import sqrt
  68.     delta = b**2 - 4*a*c
  69.    
  70.      
  71.     if delta > 0:
  72.         raiz1 = (-1*b + sqrt(delta)) / (2*a)
  73.         raiz2 = (-1*b - sqrt(delta)) / (2*a)
  74.         return [raiz1, raiz2]
  75.     elif delta < 0:
  76.         return "No existen soluciones en el campo de los nros. reales"
  77.     else:
  78.         raiz = (-1*b) / (2*a)
  79.         return raiz
  80.    
  81.  
  82. def imprimir_raices(raices):
  83.     if isinstance(raices,list):
  84.         print("Existen dos soluciones: {:.3f} y {:.3f}".format(raices[0],raices[1]))
  85.    
  86.     elif isinstance(raices, float):
  87.         print("Existe una solución: {:.3f}".format(raices))
  88.        
  89.     else:
  90.         print(raices)
  91.    
  92.  
  93.  
  94.  
  95. print("Calculo de raíces de una ec.cuadrática")
  96. print("--------------------------------------")
  97.  
  98. while True:
  99.     a,b,c = ingresar_datos()
  100.     raices = calcular_raices(a,b,c)
  101.     imprimir_raices(raices)
  102.     guardar_datos(a,b,c,raices)
  103.    
  104.     opcion = input("\nPresione cualquier tecla para continuar ('1' para salir): ")
  105.     if opcion == "1":
  106.         print("Adios...")
  107.         break
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement