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.
Python
-
- Messages : 1859
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Python
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):
A bientôt
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