2017-10-19 1 views
-2

Dans ce code, j'essaie d'ajouter des fractions et je me demande comment obtenir une entrée de 1 1/4 au lieu de (1, 1, 4). Ce code est également supposé ajouter des fractions sans utiliser les fractions de classe. Toute aide serait géniale, merci.Python - Ajout de fractions

class Fraction: 

def _gcd(a ,b): 
    while b: 
    a, b = b, a % b 
    return(a) 

def _lcm(a ,b): 
    return(a * b // Fraction._gcd(a, b)) 

def __init__(self, numerator, denominator) : 

    if denominator < 0: 
     denominator *= -1 
     numerator *= -1 

    self.num = numerator 
    self.den = denominator 

def __add__ (self, other) : 
    new_denominator = Fraction._lcm(self.den, other.den) 
    new_numerator = self.num*new_denominator//self.den + other.num*new_denominator//other.den 

    GCD = Fraction._gcd(new_numerator, new_denominator) 
    new_numerator = new_numerator // GCD 
    new_denominator = new_denominator // GCD 

    if new_numerator > new_denominator : 
    whole = new_numerator // new_denominator 
    new_numerator = new_numerator%new_denominator 
    return (whole, new_numerator, new_denominator) 
    else : 
    return (new_numerator, new_denominator) 
def __sub__(self, other): 


    temp = Fraction(-1 * other.num, other.den) 
    return(self + temp) 



num1 = Fraction(2,4) 
num2 = Fraction(15,20) 
print(num1.__add__(num2)) 
+1

pouvez-vous s'il vous plaît réduire votre "problème" à votre problème réel, y compris le comportement souhaité et ainsi de suite? –

+0

Je demande comment obtenir une sortie de 1 1/4 au lieu de 1, 1, 4 –

+0

Voulez-vous dire que vous voulez le renvoyer comme une chaîne au lieu de tuple? 'return" {} {}/{} ". format (entier, new_numerator, new_denominator)' devrait fonctionner. – anupsabraham

Répondre

1

Cela semble très mal expliqué ...

Si c'est un problème de formatage, "{} {}/{}".format(1, 1, 4) vous donnera "1 1/4" comme une chaîne, est-ce que vous voulez? Ensuite, vous pouvez l'adapter pour travailler avec les variables de votre code. Si je ne comprends pas bien, vous devriez probablement essayer de mieux expliquer votre problème.

: Réfs

https://docs.python.org/3.4/library/stdtypes.html#str.format

https://pyformat.info/

+0

désolé je ne l'ai pas expliqué clairement, je suis vraiment nouveau à ce genre de choses .... –

+0

C'est OK, je suis sûr que votre prochaine question sur SO sera beaucoup plus détaillée :) Tout le monde a le droit d'être un débutant. –