Bonjour Sve@r,

Envoy� par
Sve@r
Faudra penser � celui qui passe les pi�ces dans l'ordre croissant (ex print(tuple(rendumonnaie(((1, 2), (3, 2), (4, 1)), 6)))) car l� il ne sort pas la solution 4, 1, 1 (oui, le test du couillon dans sa plus pure expression). Un petit tri au d�but de la fonction peut-�tre...
J'ai ajout� un tri de C au d�but de la fonction:
1 2
| # Etre sûr que les valeurs de la caisse sont dans le bon ordre
C.sort(key=itemgetter(0), reverse=True) |
Il y a encore un petit défaut de syntaxe ici: if arendre > sum([p*n for p, n in C]). C'est if arendre > sum(p*n for p, n in C) qu'il faut écrire.
Ce n'est pas un probl�me de syntaxe, mais un travail inutile. J'ai modifi�!
Je connais le probl�me, mais j'ai toujours des r�ticences, parce qu'il faut vraiment se pencher sur les sp�cificit�s de Python: container, generator, iterator, iterable, etc...
Par exemple:
[p*n for p, n in C] ===> est une liste compr�hension, et donc un container, qui est aussi un iterable: c'est ce que j'ai utilis� avec sum.
(p*n for p, n in C) ===> est un g�n�rateur
p*n for p, n in C ===> est aussi un g�n�rateur mais provoque une erreur de syntaxe en dehors d'une fonction comme sum qui demande un iterable.
etc...
Avec, en plus:
- un g�n�rateur est un it�rateur
- un it�rateur est un iterable
- un container (list, set, dic compr�hension) est aussi un iterable
Il y a vraiment de quoi se perdre, et je ne suis m�me pas s�r d'en avoir compris toutes les subtilit�s... En dehors de la doc Python, quelques explications compl�mentaires ici:
https://nvie.com/posts/iterators-vs-generators/
https://stackoverflow.com/questions/...-and-iterators
J'ajoute ces am�liorations dans le code pr�c�dent.
Merci! Je reste � l'�coute s'il y a d'autres probl�mes ou d'autres am�liorations!
Partager