在 Python 中创建分数

Create Fraction in Python

我在学校接到了一个任务,要定义一个函数名"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

我不知道我哪里错了,谁能帮我解决一下? 非常感谢。

您在为 b 计算 GCD 之前修改 a;因此,您的第二个 GCD 计算将始终 return 1.

你可以试试这个:

def fraction(a,b):
  g = GCD(a,b)
  a //= g
  b //= g
  print("{}/{}".format(a, b))

另请注意,我使用了 integer division (floordiv) //,因此我没有得到浮点数,因此我必须在 int.

中返回

在你的 def 分数中,

def fraction(a,b):
  a/=GCD(a,b)
  b/=GCD(a,b)
  print(str(int(a))+"/"+str(int(b)))

您修改了一个。 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)))

非常感谢您提供有用的答案,我已经意识到我做错了什么并结合您的所有答案制作了一个新的。 这是新的:

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

再次感谢大家,你们让我很开心。