teslariu

raiz con excep

Nov 30th, 2021
731
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. """
  5. Script que calcula las raices de una ec cuadratica
  6.  
  7. """
  8. from datetime import datetime
  9. from math import sqrt
  10.  
  11. def ingresar_dato(tipo):
  12.     while True:
  13.         try:
  14.             n = float(input(f"Ingrese el coeficiente {tipo}: "))
  15.         except ValueError:
  16.             print("No ha ingresado un número")
  17.         else:
  18.             if tipo == "a" and not n:
  19.                 print("El coeficiente a debe ser no nulo")
  20.                 continue
  21.             return n
  22.  
  23.    
  24. def calcular_raices(a,b,c):
  25.     delta = b**2 - 4*a*c
  26.    
  27.     if delta == 0:
  28.         raiz = -1*b / (2*a)
  29.         return raiz
  30.     elif delta > 0:
  31.         raiz1 = (-1*b + sqrt(delta)) / (2*a)
  32.         raiz2 = (-1*b - sqrt(delta)) / (2*a)
  33.         return [raiz1, raiz2]
  34.     else:
  35.         return "No hay raices"
  36.    
  37.    
  38.    
  39. def imprimir_raices(raices):
  40.     if isinstance(raices, float):
  41.         print("Existe una solución: {:.2f}".format(raices))
  42.     elif isinstance(raices, list):
  43.         print("Existen dos soluciones: {:.2f} y {:.2f}".format(raices[0], raices[1]))
  44.     else:
  45.         print(raices)
  46.        
  47.    
  48.    
  49. def grabar_datos(a,b,c,raices):
  50.     # abro el archivo en modo append, si no existe lo crea
  51.     f = open("resultados.txt","a")
  52.     f.write(datetime.now().strftime("%d/%m/%y %H:%M:%S") + "\n")
  53.     f.write("Parametros:\n")
  54.     f.write(f"a: {a}\n")
  55.     f.write(f"b: {b}\n")
  56.     f.write(f"c: {c}\n")
  57.     f.close()
  58.  
  59. while True:
  60.     print("\nScript para calcular raices de una ec. cuadrática")
  61.    
  62.     a = ingresar_dato("a")
  63.     b = ingresar_dato("b")
  64.     c = ingresar_dato("c")
  65.     raices = calcular_raices(a,b,c)
  66.     imprimir_raices(raices)
  67.     grabar_datos(a,b,c,raices)
  68.    
  69.    
  70.     opcion = input("Presione cualquier tecla o '1' para salir: ")
  71.     if opcion == "1":
  72.         print("Gracias por usar este programa...")
  73.         break
  74.  
RAW Paste Data