用Python创建分数

时间:2019-02-05 10:55:20

标签: python python-3.x fractions

在学校,我被赋予了一个定义功能名称“ 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

我不知道我在哪里错了,有人可以帮我弄清楚吗? 非常感谢。

3 个答案:

答案 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))

再次非常感谢大家,您决定了我的生活。