【问题标题】:Create Fraction in Python在 Python 中创建分数
【发布时间】:2019-02-05 10:55:19
【问题描述】:

我在学校得到了一个任务来定义一个函数名“分数”,就像分数模块一样工作。 这是我的做法:

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

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

【问题讨论】:

  • 这不是您问题的解决方案,但对于其他人(也许还有 OP),如果有人想知道 work just as the Fraction Modules 的部分,它会起作用,print(Fraction(45, 9)) 给出输出5.
  • 您正在修改a/=GCD(a,b),然后再使用它来计算b/=FCD(a,b)。只需使用x=GCD(a,b) 作为中间度量,使用x 计算ab。然后,它会工作

标签: python python-3.x fractions


【解决方案1】:

在计算GCDb 之前修改a;因此,您的第二次 GCD 计算将始终返回 1

你可以试试这个:

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

还请注意,我使用了 integer division (floordiv) //,因此我没有得到浮点数,因此我必须在 int 中回滚。

【讨论】:

    【解决方案2】:

    在你的 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)))
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-03
        • 2021-12-11
        • 2019-03-23
        • 2021-04-18
        • 2013-06-09
        • 2020-06-10
        相关资源
        最近更新 更多