2017-10-14 7 views
1

Je pratique l'examen, et l'une des questions vous demande de créer une fonction appelée diviser (a, b) calcule à la fois le quotient et le reste des deux paramètres et renvoie les deux résultats. Vous ne pouvez pas utiliser l'opérateur de division intégré ou l'opérateur modulo et devez le faire en utilisant une boucle qui appelle à plusieurs reprises la fonction de soustraction (une fonction faite à l'étape précédente d'activité.) J'ai essentiellement compris comment déterminer le quotient et le reste. Je ne peux pas comprendre comment faire la division dans une boucle en utilisant l'addition de soustraction seulement.C'est le code que j'ai jusqu'ici (note: l'entrée pour a/b est fait séparément, ce sont juste les fonctions):Division retour quotient et reste en utilisant une boucle et soustraction?

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 comment peut modifier ma boucle while en division (a, b) à utiliser la soustraction au lieu de la division

Répondre

1

Ok, donc la clé est ici reconnaître que le quotient est combien de fois vous pouvez régulièrement soustraire votre diviseur, alors que le re Mainder est ce qui reste. Donc:

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

Merci! Je pense que j'ai fait quelque chose de similaire auparavant, mais ça ne fonctionnait pas alors je l'ai abandonné. Aussi, le colon à la fin de [quotient = 0:] est-il censé être là? Il s'est présenté comme une erreur de syntaxe pour moi mais sans elle le code a bien fonctionné. – Moca

+0

Oups! C'était juste une faute de frappe;) – Hallsville3