我使用以下代码创建了分数,因为直接使用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包含一些分数(一些是简化的,一些不是)。如何访问未简化的分数的分子和分母?
提前致谢。
答案 0 :(得分:0)
您应该使用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