字符串格式的分数到混合数

时间:2016-11-14 17:17:21

标签: decimal division fractions

我的函数应该使用一个字符串,这是一个基本的x/y分数,并将其转换为一个混合分数作为字符串,a b/c其中a是一个整数,{{1是一个不可简化的部分。

这是我的代码:

b/c

这是我的错误:

from fractions import Fraction
def mixed_fraction(s):
    s = x.numerator / y.denominator
    a = s 
    after_decimal = (a-int(a))[1:]
    dec_2_frac = Fraction(after_decimal) 
    b = b.numerator
    c = c.denominator
    if y > 0:
        return "{} {}/{}".format(a, b, c)
    else: 
        return "ZeroDivisionError: division by zero"

从根本上说,我可以很容易地看到NameError: global name 'x' is not defined 未正确定义的方式,但我无法理解如何将x表示为x的对应分子x。我的感觉告诉我,我需要对x/y进行相同的调试,因此我试图在第3行定义两者。我只是被卡住了。请帮忙!

MJ

1 个答案:

答案 0 :(得分:0)

from fractions import gcd

def mixed_fraction(s):
    a = s.split('/')
    x = float(a[0])
    y = float(a[1])
    if y == 0:
       return "ZeroDivisionError: division by zero"
    z = (x/y)
    if z < 1:
       return s
    if z==int(z):
       return int(z)
    a = int(x) % int(y) 
    g = gcd(int(y), a)
    a = a / g
    y = y / g
    return "%s %s / %s" % (int(z), a, int(y))