在学校,我被赋予了一个定义功能名称“ fraction”的任务,该功能与分数模块一样工作。 这是我的方法:
def GCD(x,y):
while y!= 0:
(x,y) =(y,x%y)
return x
def fraction(a,b):
a/=GCD(a,b)
b/=GCD(a,b)
print(str(int(a))+"/"+str(int(b)))
但是当我试图查看它如何工作时,它变成了这样:
fraction(45,9)
5/9
我不知道我在哪里错了,有人可以帮我弄清楚吗? 非常感谢。
答案 0 :(得分:2)
您在计算a
的{{1}}之前修改GCD
;因此,您的第二次b
计算将始终返回GCD
。
您可以尝试以下方法:
1
还请注意,我使用了integer division (floordiv) //
,所以我没有得到浮点数,因为我不得不在def fraction(a,b):
g = GCD(a,b)
a //= g
b //= g
print("{}/{}".format(a, b))
中强制返回。
答案 1 :(得分:0)
在您的def分数中,
def fraction(a,b):
a/=GCD(a,b)
b/=GCD(a,b)
print(str(int(a))+"/"+str(int(b)))
您修改了a。 a变为45/9 =5。b除以GCD(5,9)(等于1)将为b。相反,您可以将GCD存储在一个临时变量中,然后将其除以。
def fraction(a,b):
gcd = GCD(a,b)
a//=gcd
b//=gcd
print(str(int(a))+"/"+str(int(b)))
答案 2 :(得分:0)
非常感谢您提供的有帮助的答案,我已经意识到我做错了什么,并结合了您所有的答案,重新编写了一个答案。 这是新的:
def GCD(x,y):
while y!= 0:
(x,y) =(y,x%y)
return x
def fraction(a,b):
gcd=GCD(a,b)
a=a//gcd
b=b//gcd
print(str(a)+"/"+str(b))
再次非常感谢大家,您决定了我的生活。