我的函数应该使用一个字符串,这是一个基本的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
答案 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))