Я работаю над вопросом в python, который занимается рациональными числами, и у него есть способ, который упрощает его. Например, 12/8
дает 3/2
. Я задал этот вопрос и получил правильный ответ, но я это сделал, найдя gcd числителя и знаменателя. Может кто-то поможет сделать это, используя некоторые встроенные специальные функции или функции python, модули или что-то уникальное для python, как вы говорите «Пути-Пути!».Упрощение рационального числа с использованием python
Существует ли такой способ или любые тестовые примеры, чтобы охватить все возможности?
Вот мой код:
class RationalNumber:
def __init__(self, n, d=1):
self.n=n
self.d=d
'''def gcd(self, a, b): // I have taken out gcd by two methods: recursion and while loop
if b>a:
t=a
a=b
b=t
while a%b != 0:
r=a%b
a=b
b=r
return b
'''
def gcd(self, a, b):
if a%b==0:
return b
else:
return self.gcd(b, a%b)
def simplify(self):
x=self.gcd(self.n, self.d)
self.n=self.n/x
self.d=self.d/x
return RationalNumber(self.n, self.d)
def __str__(self):
print "%s/%s"%(self.n, self.d)
r1 = RationalNumber(12,8)
print r1.simplify()
При запуске программы она дает ответ и дает ошибку:
Traceback (most recent call last):
File "C:\Python27\CTE Python Practise\New folder\RationalNumberSimplify.py", line 42, in <module>
print r1.simplify()
TypeError: __str__ returned non-string (type NoneType)
Пожалуйста, помогите мне удаления ошибки и улучшения кода и делает его больше питонов!
Все функции внутри класса извините за неправильно отступов – user2696258
Вы должны использовать пробелы для отступов, а не вкладки – stranac
Хотя у вас есть законный вопрос здесь, точка этот сайт НЕ «улучшает код», «помогает сделать программу более эффективной». Проверьте FAQ и в следующий раз задайте один вопрос. – Hooked