Método de bisección de Python

def bisection(f, a, b, eps):
  if f(a) * f(b) >= 0:
    raise BaseException("Wrong interval!")
  if a > b:
    a, b = b, a
  n = 0
  x = (a + b) / 2
  while b - a >= 2*eps:
    if f(x) == 0:
      return x, n
    elif f(a) * f(x) < 0:
      b = x
    else:
      a = x
    x  = (a + b) / 2
    n += 1
  return x, n
Elderdrinker