Python

Retrouver tous les sujets résolus.
Répondre
Cédric

Python

Message par Cédric » sam. 8 févr. 2020 15:11

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.
SoS-Math(25)
Messages : 1741
Enregistré le : mer. 2 nov. 2011 09:39

Re: Python

Message par SoS-Math(25) » sam. 8 févr. 2020 20:44

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
Répondre