Page 1 sur 1

Python

Posté : sam. 8 févr. 2020 15:11
par Cédric
Bonjour,
un DAB propose de ne distribuer que des billets de 10 ou 20 euros.
Lors d'un retrait, le DAB distribue le moins de billets possibles.
Voici l'algorithme dans le livre :
def DAB(n) :
if n%10!=0:
return "impossible"
else :
i=0
while n>=20:
n,i=n-20,i+1
billets_20=i
billets_10=n//10
return billets_10,billets_20
Je ne comprends pas la ligne n,i=n-20,i+1 et pourtant l'algorithme fonctionne (je viens de le tester !).
Si je prends un exemple : DAB(50).
Pour DAB(50), le reste de 50 par 10 est égal à 0 donc on est dans la boucle else :
tant que n est plus grand que 50, c'est le cas à la première étape,
n vaut 50, i vaut 50-20=30, i vaut 0+1 =1 (d'ailleurs pourquoi i ne serait pas plutôt égal à 30+1 car la valeur précédente de i était 30).
Ensuite billets de 20=1
billets de 10=5 qui est le quotient de 50 par 10.
étape 2 : on a toujours n = 50 ???
Je ne comprends pas ce qu'il se passe à la ligne n,i=n-20,i+1.
J'aurais plutôt mis n,n=n-20,i+1 ???
Merci de votre aide !
C.

Re: Python

Posté : sam. 8 févr. 2020 20:44
par SoS-Math(25)
Bonsoir Cédric,

Tu peux utiliser la balise code pour insérer du code "</>"

J'ai retouché le code pour comprendre plus facilement cette ligne (C'est la même chose):

Code : Tout sélectionner

def DAB(n) :
    if n%10 != 0:
        return "impossible"
    else :
        i = 0
    while n>=20:
        n = n-20
        i = i+1
        billets_20 = i
    
    billets_10 = n//10
    return billets_10,billets_20
A bientôt