Erreur SyntaxError: positional argument follows keyword argument
Bonjour,
Pouvez-vous me dire où est le problème du code suivant? glouton
Voici l'erreur reçu :
Citation:
SyntaxError: positional argument follows keyword argument
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| S = (200,100,50,20,10,5,2,1)
def rendu_recur(somme,S,pieces_rendues=[],ind=0):
if somme == 0:
return pieces_rendues
elif S[ind] <= somme:
return rendu_recur(somme=somme-S[ind],S,
pieces_rendues.append(S[ind]),ind=ind+1)
elif ind == len(S)-1:
return-1
else:
return rendu_recur(somme=somme-S[ind],
S,pieces_rendues.append(S[ind]),ind=0) |
Merci pour votre aide
SyntaxError: positional argument follows keyword argument
Citation:
Envoyé par
Pyramidev
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 :
Code:
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
Merci pour la reponse
Mais je viens de faire toutes les mdifs conseillées mais le code ne fonctionne pas, meme si en enlevant somme=, je n'ai plus le message syntaxerror,
au mieux, le resultat ne renvoit rien.