Bonjour,
Comme l'indique le message d'erreur, un argument positionnel n'a pas le droit de se trouver après un argument nommé.
Dans cet appel de fonction :
rendu_recur(somme=somme-S[ind],S,pieces_rendues.append(S[ind]),ind=ind+1)
Le premier argument est nommé, le deuxième et le troisième sont positionnels et le dernier est nommé.
Une solution possible est de remplacer
somme=somme-S[ind] par
somme-S[ind]. Ainsi, le premier argument devient positionnel.
Une autre solution est de remplacer
S,pieces_rendues.append(S[ind]) par
S=S,pieces_rendues=pieces_rendues.append(S[ind]). Ainsi, tous les arguments sont nommés.
Plus d'infos dans cette partie du tutoriel officiel de Python :
https://docs.python.org/3/tutorial/c...word-arguments
À part ça, tu vas rapidement tomber sur une autre erreur à cause de ta manière d'appeler
append.
append ajoute un élément à une liste, mais ne retourne pas la liste elle-même. L'expression
pieces_rendues.append(S[ind]) vaut
None, donc la passer en argument de fonction n'aura pas le comportement que tu recherches.
Dans sa définition de fonction, les paramètres peuvent être positionnels ou nommés. Le premier argument peut être nommé si tous les suivants le sont aussi.
Pour définir des paramètres uniquement positionnels (ce qui est possible depuis Python 3.8), la partie correspondante du tutoriel officiel est là :
https://docs.python.org/3/tutorial/c...nly-parameters
Partager