OVH Cloud OVH Cloud

Petite question sur les tuples

11 réponses
Avatar
Alain BARTHE
Bonjour,

Petite question existentielle concernant les tuples et l'"opérateur" * :

je voudrais imprimer suivant le format frm = "%s %d %d %d %d"
les valeurs suivantes:
- une date
- 4 décimaux contenus dans un tableau tot[]

Or, print prend en argument un tuple.

J'ai donc essaye :

print frm % (date, tuple (tot))

Mais ca ne marche pas : cree le tuple ("2001-01-01", (10,20,30,40))

J'ai donc essayé aussi :

print frm % (date, * tuple(tot))
print frm % (date, *tot)

Mais ca ne marche pas non plus : erreur de syntaxe

Ce qui marche :

print frm % tuple ([date] + tot)




Par contre, si je fais :
d = [2010,4,30]

datetime.date (d) => erreur disant que date attend un tuple d'arguments

datetime.date (*d) => fonctionne

Si j'ai bien compris, *d passe les valeurs du tableau comme une "suite"
(je sais pas le terme exact) de parametres a la fonction date

Je voudrais savoir pourquoi *tot est rejete par print(), mais accepte
par date()

Cela vient-il de la signature de la fonction print() ?
Où trouver la doc de cet opérateur * ?
Je n'ai jamais rien vu là dessus, hormis dans des exemples de code.

1 réponse

1 2
Avatar
News123
Alain BARTHE wrote:

Et puis, j'ai dit "un peu" complexe.

Je ne voulais vexer personne, surtout pas News123 qui a pris du temps
pour donner sa solution du problème.




Pas de probleme.
Je ne suis pas aussi facilement a vexer ;-)
1 2