Search code examples
python-3.xfractions

Accessing numerator and denominator of existing fractions in python


I've created fractions using the following code as by using the fraction module directly would yield a simplified fraction which I don't want:

from fractions import Fraction


class MyFraction:
    def __init__(self, numerator=1, denominator=1):
        self.numerator = numerator
        self.denominator = denominator

    def get_fraction(self):
        return Fraction(numerator=self.numerator, denominator=self.denominator)

    def __repr__(self):
        return '{}/{}'.format(self.numerator, self.denominator)

list_S = []

upper_limit = int(input("Enter upper limit : "))


for a in range(1, upper_limit + 1):

    for b in range(1, upper_limit + 1):

        f_ = MyFraction(a, b)

        list_S.append(f_)

for fraction in list_S:
    # do something to access numerator and denominator of each fraction in list_S

Now, list_S contains a few fractions(some are simplified, some are not). How do I access the numerator and denominator of the fractions that are not simplified?

Thanks in advance.


Solution

  • You should have a get_numerator and a get_denominator method since you do not want to use get_fraction as it would simplify your fraction.

    Then use the code below to access the not simplified fractions (does not work if you can have 0 as denominator, but it should not be the case):

    class MyFraction:
        def get_numerator(self):
            return self.numerator
        def get_denominator(self):
            return self.denominator
    
    from fractions import gcd
    for f in list_S:
        if gcd(f.get_numerator(), f.get_denominator()) != 1:
            # do some stuff with non simplified fraction