input: two integer 'numerator' and 'denominator' assumes: 'denominator' != 0 returns: a tuple with simplify numerator and denominator. >>> simplify_fraction(10, 20) (1, 2) >>> simplify_fraction(10, -1) (10, -1) >>> simplify_fraction("test","test") Traceback (mos
(numerator, denominator)
| 726 | |
| 727 | |
| 728 | def simplify_fraction(numerator, denominator): |
| 729 | """ |
| 730 | input: two integer 'numerator' and 'denominator' |
| 731 | assumes: 'denominator' != 0 |
| 732 | returns: a tuple with simplify numerator and denominator. |
| 733 | |
| 734 | >>> simplify_fraction(10, 20) |
| 735 | (1, 2) |
| 736 | >>> simplify_fraction(10, -1) |
| 737 | (10, -1) |
| 738 | >>> simplify_fraction("test","test") |
| 739 | Traceback (most recent call last): |
| 740 | ... |
| 741 | AssertionError: The arguments must been from type int and 'denominator' != 0 |
| 742 | """ |
| 743 | |
| 744 | # precondition |
| 745 | assert ( |
| 746 | isinstance(numerator, int) |
| 747 | and isinstance(denominator, int) |
| 748 | and (denominator != 0) |
| 749 | ), "The arguments must been from type int and 'denominator' != 0" |
| 750 | |
| 751 | # build the greatest common divisor of numerator and denominator. |
| 752 | gcd_of_fraction = gcd_by_iterative(abs(numerator), abs(denominator)) |
| 753 | |
| 754 | # precondition |
| 755 | assert ( |
| 756 | isinstance(gcd_of_fraction, int) |
| 757 | and (numerator % gcd_of_fraction == 0) |
| 758 | and (denominator % gcd_of_fraction == 0) |
| 759 | ), "Error in function gcd_by_iterative(...,...)" |
| 760 | |
| 761 | return (numerator // gcd_of_fraction, denominator // gcd_of_fraction) |
| 762 | |
| 763 | |
| 764 | # ----------------------------------------------------------------- |
nothing calls this directly
no test coverage detected