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

Accessing numerator and denominator of existing fractions in python

我使用以下代码创建了分数,因为直接使用 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 包含一些分数(有些是简化的,有些不是)。如何获取未简化的分数的分子和分母?

提前致谢。

你应该有一个 get_numerator 和一个 get_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