Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 02-11-2019 19:07:48

soleil35
Membre
Inscription : 02-11-2019
Messages : 1

python

bonjour, cela fait maintenant 1h que je suis bloquée dessus. Pouvez vous m'aider !

Ecrire une fonction appelée divisionEuclidienne qui prend en entrée deux entiers a et b et ressort le quotient et le reste de la division euclidienne de a par b.
Dans le programme principal, on doit appeler la fonction de la façon suivante:
quotient, reste= divisionEuclidienne(a,b)

merci !

Hors ligne

#2 02-11-2019 20:24:53

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : python

Bonsoir,

I  Un mot-clé suffit, et celui qui t'a donné l'exo ne le connaît probablement pas, pas besoin de fonction, je te montre :

quotient,reste =divmod(2019,31)

Et si tu demandes ce que valent quotient et reste :

quotient,reste =divmod(2019,31)
print (quotient, reste)

Et tu obtiens : (65,4)...

II  Bon, alors réinventons la roue.
Une fonction, ça commence par def
Donc ici ;

def divisionEuclidienne(a,b):

Qu'est-ce qu'on met dedans ?
Pour ça, revoyons la définition de la division euclidienne de a par b !
1. a,b,quotient,reste sont des nombres entiers tels que a = b * quotient +reste
2. Avec reste < b....

Donc il te faut utiliser, si on réinvente complètement la roue : la division, la partie entière du quotient, multiplication et soustraction...
En effet si je connais a, b et q, le reste s'obtient ainsi r = a - b* q
Reste à trouver le quotient entier
q = a/b donne un quotient décimal : or, les décimales on n'en veut pas...
Donc, il faut les supprimer... Comment ? en prenant la partie entière du quotient...
C'est le rôle de int() : q=int(a/b)...
Avec 2019 et 31
a/b donne 65.12903225806451 mais q=int(a,b) contiendra 65...
On a donc :    2019= 31 * 65  + r, donc r = 2019 - 31 *65
On en est là :


def divisionEuclidienne(a,b):
    calcul de q
    calcul de r
 

Et si tu veux récupérer quotient et reste, il faut bien que la fonction renvoie ces valeurs :


def divisionEuclidienne(a,b):
    calcul de q
    calcul de r
    return q,r
 

Et tu n'as plus besoin que d'écrire ce qui est exigé après le return (je saute une ligne ça fait plus propre) :


def divisionEuclidienne(a,b):
    calcul de q
    calcul de r
    return q,r

quotient,reste=divisionEuclidienne(a,b)
 

Pour tester, tu remplaces dans mon exemple a par 2019 et b par 31....

---------------------------------------------------------------------------------

III  Si on sait que le calcul du quotient entier s'obtient par q=a//b  et celui du reste par r =a % b, la fonction est plus rapide à écrire...
Ce que j'ai écrit au dessus reste valable  :
c'est simplement la méthode de calcul de q, puis celle de r qui changent..
q = 2019 // 31     q vaut 65
r = 2019 % 31   r vaut   4...
% c'est modulo qui est le reste.


En résumé, je t'ai proposé 3 solutions :
- acheter directement une roue (1ere méthode présentée)
- réinventer la roue de A à Z (2e méthode)
- inventer un pneu pour mettre autour de la roue (3e méthode présentée)

On pourrait écrire un 4e procédé en utilisant une boucle while (Tant que) dans la fonction et la méthode de dichotomie (tu sais le jeu de la télé où il fallait trouver un prix avec comme indication après une proposition : c'est plus ou c'est moins)

Je ne sais pas ce que tu connais dans tout ça, à toi de me le dire...
La boucle while, j'en doute, mais je peux me tromper...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Pied de page des forums