B.4. Comparar fracciones Python
Supongamos que tenemos dos objetos Fracción, a y b, y evaluamos a == b. La implementación por defecto de == comprueba la igualdad super¯cial, por lo que solo devuelve true si a y b son el mismo objeto.
Queremos mas bien devolver verdadero si a y b tienen el mismo valor |eso es,igualdad en profundidad.
Hemos de enseñar a las fracciones como compararse entre si. Como vimos en la Sección 15.4, podemos sobrecargar todos los operadores de comparación de una vez proporcionando un método cmp .
Por convenio, el método cmp devuelve un numero negativo si self es menor que otro, zero si son lo mismo, y un numero positivo si self es mayor que otro.
La forma mas simple de comparar dos fracciones es la multiplicación cruzada.
Si a=b > c=d, entonces ad > bc. Con esto en mente, aquí esta el código para cmp :
1: class Fraccion:
2: ...
3: def __cmp__(self, otro):
4: dif = (self.numerador * otro.denominador -
5: otro.numerador * self.denominador)
6: return dif
Si self es mayor que otro, entonces dif sera positivo. Si otro es mayor, entonces dif sera negativo. Si son iguales, dif es cero.
Comentarios
Publicar un comentario