Advertisement
teslariu

sq_excep

Aug 30th, 2021
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. """
  5. Script que calcula las raices de una ec. cuadrática en el campo de los
  6. nros. reales.
  7. Ej:
  8. >>> Ingrese el tèrmino cuadrático (a): 1
  9. >>> Ingrese el tèrmino lineal (b): 10
  10. >>> Ingrese el tèrmino independiente (c): 5
  11. >>> No existen raìces en el campo de los nros reales
  12. """
  13.  
  14. import datetime # para guardar fecha y hora
  15.  
  16. ######## funciones ###############
  17.  
  18. def ingresar_numero(mensaje):
  19. """ Función que retorna un nro ingresado por el usario. Si
  20. ingresa una cadena no convertible a entero o float, lo indica
  21. y no sale de un bucle hasta el ingreso correcto"""
  22. while True:
  23. try:
  24. numero = float(input(mensaje))
  25. except ValueError:
  26. print("Error. Debe ingresar un nro.")
  27. else:
  28. break
  29. return numero
  30.  
  31.  
  32. def calcular_raices(a,b,c):
  33. from math import sqrt
  34. delta = b**2 -4*a*c
  35.  
  36. if delta == 0:
  37. raiz = -1*b / (2*a)
  38. return raiz
  39.  
  40. elif delta > 0:
  41. raiz1 = (-1*b + sqrt(delta)) / (2*a)
  42. raiz2 = (-1*b - sqrt(delta)) / (2*a)
  43. return [raiz1, raiz2]
  44.  
  45. else:
  46. return "No existen raìces en el campo de los nros reales"
  47.  
  48.  
  49.  
  50. def grabar_datos(a,b,c,raices):
  51. """
  52. Guardo en el archivo 'cuadratica.txt' fecha, hora, parámetros y
  53. raíces de cada cálculo efectuado
  54. """
  55. try:
  56. f = open("cuadratica.txt", "x")
  57. except FileExistsError:
  58. f = open("cuadratica.txt", "a")
  59. f.write(datetime.datetime.now().strftime('%d/%m/%y %H:%M:%S') + '\n')
  60. f.write("Parámetros de la parábola:\n")
  61. f.write(f"a: {a}\n")
  62. f.write(f"b: {b}\n")
  63. f.write(f"c: {c}\n")
  64. if isinstance(raices, float):
  65. f.write("Existe una solución: {:.2f}".format(raices) + "\n\n")
  66. elif isinstance(raices, list):
  67. f.write("Existen dos soluciones: {:.2f} y {:.2f}".format(raices[0],raices[1]) + "\n\n")
  68. else:
  69. f.write(raices + "\n\n")
  70. f.close()
  71.  
  72.  
  73.  
  74.  
  75.  
  76. def imprimir(raices):
  77. if isinstance(raices, float):
  78. print("Existe una solución: {:.2f}".format(raices))
  79. elif isinstance(raices, list):
  80. print("Existen dos soluciones: {:.2f} y {:.2f}".format(raices[0],raices[1]))
  81. else:
  82. print(raices)
  83.  
  84.  
  85.  
  86. ###################################
  87.  
  88. print("Programa que calcula las raíces de una parábola")
  89.  
  90. while True:
  91.  
  92. while True:
  93. a = ingresar_numero("Ingrese el tèrmino cuadrático (a): ")
  94. if a != 0:
  95. break
  96. else:
  97. print("a debe ser no nulo")
  98.  
  99. b = ingresar_numero("Ingrese el tèrmino lineal (b): ")
  100. c = ingresar_numero("Ingrese el tèrmino independiente (c): ")
  101.  
  102. raices = calcular_raices(a,b,c)
  103. grabar_datos(a,b,c,raices)
  104. imprimir(raices)
  105.  
  106. opcion = input("Presione cualquier tecla o '1' para salir: ")
  107. if opcion == "1":
  108. print("Gracias por utilizar este programa...")
  109. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement