I am to write a class 'rational' with a set of instance methods that when initialized, like for instance r = Rational(-49, 168) has a set of methods which finds the highest common denominator between these two and returns the arguments divided by this hcd.
This works just fine for positive arguments, as well as when the left argument is positive. When the right argument, the argument for denominator is negative, however, self.denominator disappears and I get False if i try:
r = Rational(49, -168)
print(r.get_num() == -7 and r.get_denom() == 24)
class Rational:
def __init__(self, numerator, denominator=1):
self.numerator = numerator
self.denominator = denominator
def cd_numerators(self):
list_cd_numerators = []
for i in range(1, abs(self.numerator+1)):
if abs(self.numerator) % i == 0:
list_cd_numerators.append(i)
return list_cd_numerators
def cd_denominators(self):
list_cd_denominators = []
for i in range(1, abs(self.denominator+1)):
if abs(self.denominator) % i == 0:
list_cd_denominators.append(i)
return list_cd_denominators
def highest_common_denominator(self, a, b):
highest_common_denominator1 = 1
for i in a:
if i in b:
highest_common_denominator1 = i
return highest_common_denominator1
def get_num(self):
common_denominator = self.highest_common_denominator(self.cd_numerators(), self.cd_denominators())
numerator = self.numerator / common_denominator
print(numerator)
return numerator
def get_denom(self):
common_denominator = self.highest_common_denominator(self.cd_numerators(), self.cd_denominators())
denominator = self.denominator / common_denominator
print(denominator)
return denominator
As you can see the code for get_denom(self) and get_num(self) is precisely the same, so I cannot understand where I'm going wrong.