분수

2016-11-14 4 views
0

기본 x/y 부분 인 문자열을 가지고 가고, a는 정수이며 b/c는 기약 분수 인 문자열, a b/c로 혼합 비율에 그 변환해야 내 기능. 나는 쉽게 x이 제대로 정의되지 않은 방법을 볼 수 있지만, 어떻게 내가 주위에 내 머리를 정리 할 수없는 근본적분수

NameError: global name 'x' is not defined 

: 여기

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" 

내 오류입니다 : 여기

내 코드입니다 x를 대응하는 분자로 나타내면 xx/y이다. 내 감각은 내가 y에 대해 동일한 디버깅을해야한다는 것을 말해 주므로, 3 행 모두를 정의하려고 시도했습니다. 간단히 말해서 붙어 있습니다. 도와주세요!

MJ

이 작동

답변

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

! 내 다음 테스트 케이스는 "6/3"이 2의 출력과 같아야한다는 것을 말하지만, 12 행과 13 행이 이것을 설명한다고 생각합니까? 제 이해는 이것이 12 행과 13 행에 대한 것입니다 ... 출력 결과가 올바른 결과를 보여주고 있지만 결과는 2가 아닌 2가되어야합니다. –

+0

숫자 대신 문자열이 표시됩니다 너 결과? –

+0

그것은 정수가 아니라 문자열이어야한다고 말합니다. –