访问python中现有分数的分子和分母

时间:2018-03-27 05:54:07

标签: python-3.x fractions

我使用以下代码创建了分数,因为直接使用fraction模块会产生一个我不想要的简化分数:

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

现在,list_S包含一些分数(一些是简化的,一些不是)。如何访问未简化的分数的分子和分母?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您应该使用get_numeratorget_denominator方法,因为您不想使用get_fraction,因为它会简化您的分数。

然后使用下面的代码访问未简化的分数(如果您可以将0作为分母,则不起作用,但不应该是这样):

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