class?Rational(object):
????def?__init__(self,?p,?q):
????????self.p?=?p
????????self.q?=?q
????????def?gcd(p,q):
????????????if?q==0:
????????????????return?p
????????????return?gcd(q,p%q)
????????self.r=gcd(p,q)?#這里為什么要賦值給self.r??為什么賦值給g,或者a之類的不行?這怎么解釋???
????def?__add__(self,?r):
????????return?Rational(self.p?*?r.q?+?self.q?*?r.p,?self.q?*?r.q)
????def?__sub__(self,?r):
????????return?Rational(self.p*r.q-r.p*self.q,self.q*r.q)
????def?__mul__(self,?r):
????????return?Rational(self.p*r.p,self.q*r.q)
????def?__div__(self,?r):
????????return?Rational(self.p*r.q,self.q*r.p)
????def?__str__(self):
????????return?'%s/%s'%(self.p/self.r,self.q/self.r)
????__repr__?=?__str__
r1?=?Rational(1,?2)
r2?=?Rational(1,?4)
print?r1?+?r2
print?r1?-?r2
print?r1?*?r2
print?r1?/?r2這道題,print出來(lái)很正常但是我突然想到一個(gè)問(wèn)題,假如帶入的是r1 = Rational(120,1)r2 = Rational(45,1),按照gcd()可得-->gcd(120,45)-->gcd(45,120%45)-->gcd(45,30)。到這里,問(wèn)題來(lái)了,最大公約數(shù)30,那么帶入結(jié)果120/45,分子分母同時(shí)除以30?。『眉一铮?!等于4/1.5,除非是可以繼續(xù)循環(huán)的,一直到15為止!再來(lái)r1 = Rational(6,1)r2 = Rational(16,1),按照gcd()可得-->gcd(6,16)-->gcd(16,6%16)-->gcd(16,0),即最大公約數(shù)等于6,這tm不是打臉嗎?。。????小白求大神鞭撻?。?!
添加回答
舉報(bào)
0/150
提交
取消