
Iker Alvarez
PreguntaHola buenas, he escrito unas líneas de código para replicar el Teorema de Bolzano y probarlo, pero no me funciona el programa. Aquí os dejo el código.
import unittest import math def bolzano(): print("Esta va a ser tu ecuación de tercer grado: Ax^2 + Bx + C = D. Introduce los factores de tu ecuación") # A = float(input("A: ")) # B = float(input("B: ")) # C = float(input("C: ")) # D = float(input("D: ")) A = float(1) B = float(0) C = float(-5) D = float(0) a = float(0.1) fa = A*a**2 + B*a + C -D b = float(100) b_max = b*2 b_min = a for i in range(5): fb = A*b**2 + B*b + C -D bolzano = fa * fb print(b, b_max, b_min) if fb < 0.25 and fb > -0.25: print(b, b_max, b_min) return b elif bolzano < 0: #Hay una raíz entre a y b print(b, b_max, b_min) b = (b - b_min)/2 b_max = b continue elif bolzano > 0: #No hay una raíz entre a y b print(b, b_max, b_min) b = (b_max + b)/2 b_min = b continue return print("No tiene respuesta") class TestBolzano(unittest.TestCase): def run(self): solution = bolzano() print("la respuesta de x es: " + str(solution)) self.assertEqual(solution, math.sqrt(5)) if __name__ == '__main__': unittest.main()
Gracias de antemano

Kevin J. Zea Alvarado
¡Excelente, crack! Gracias por compartirlo.

Iker Alvarez
Hola! Escribo de nuevo, he encontrado el fallo. Las funciones tienen que empezar por la palabra test_ para que funcione el unittest:
class TestBolzano(unittest.TestCase): def test_run(self): solution = bolzano() print("la respuesta de x es: " + str(solution)) self.assertEqual(solution, math.sqrt(6))
Ahora sí que me ejecuta el test.
Gracias!

Iker Alvarez
λ bolzano.py ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK

Kevin J. Zea Alvarado
Cuando lo abres, ¿qué error te sale?