2017-10-14 1 views
1

Ich mache Prüfungspraxis, und eine der Fragen fordert Sie auf, eine Funktion namens divide (a, b) zu erstellen, berechnet sowohl den Quotienten als auch den Rest der beiden Parameter und gibt beide Ergebnisse zurück. Sie können den eingebauten Divisionsoperator oder den Modulooperator nicht verwenden und müssen dazu eine Schleife verwenden, die wiederholt die Subtraktionsfunktion aufruft (eine Funktion, die im vorherigen Schritt der Aktivität ausgeführt wurde. Ich habe im Wesentlichen herausgefunden, wie man den Quotienten und den Rest bestimmt Ich kann nicht herausfinden, wie man die Division in einer Schleife unter Verwendung der Subtraktion nur Addition tut.Dies ist der Code, den ich bis jetzt habe (Anmerkung: der Eingang für a/b erfolgt getrennt, dies sind nur die Funktionen):Division Division von Quotient und Rest mit einer Schleife und Subtraktion?

def add(a,b): 
    return(a + b) 

def subtract(a,b): 
    return(a - b) 

def divide(a,b): 
    c = 0 
    d = 0 
    while add(d, b) <= a: 
     c = add(c, 1) 
     d = add(d, b) 

    sub = multiply(b,c)  
    rem = subtract(a,sub) 

    return(c,rem) 

tl;? dr wie kann meine while-Schleife in divide (a, b) ändern verwenden Subtraktion statt Teilung

Antwort

1

okay, also hier der Schlüssel ist zu erkennen, dass der Quotient ist, wie oft kann man gleichmäßig Subtrahieren Sie Ihren Teiler, während die Re master ist was übrig ist. So:

def divide(a, b): 
    quotient = 0 
    while a>b: 
     quotient = add(quotient, 1) 
     a = subtract(a,b) 
    return (quotient, a) 
+0

Vielen Dank! Ich glaube, ich habe vorher schon etwas Ähnliches gemacht, aber es hat nicht funktioniert, also habe ich es verschrottet. Ist der Doppelpunkt am Ende von [quotient = 0:] auch da? Es zeigte sich für mich als ein Syntaxfehler, aber ohne ihn funktionierte der Code gut. – Moca

+0

Hoppla! Das war nur ein Tippfehler;) – Hallsville3