/EDIT 2009 04 21

Comme l'a dit Laurent dans son commentaire, il existe une fonction Python qui le fait déjà:

print str(50).zfill(4)
>> "0050"

Comme quoi, je me suis bien cassé les fesses pour rien... :seSentCon:

/FIN EDIT

En quoi ça consiste?

Et bien tout simplement, c'est une manière de récupérer une chaine de caractère (ressemblant à "005") depuis un chiffre de type "int" (dans notre exemple: 5).

Let's go

Je vous donne le code brut et j'expliquerai chacune des lignes ensuite.

def fdZeroGarbage(toGarbage, zeroNumber):
	toGarbageStr = str(toGarbage)
	while len(toGarbageStr) < zeroNumber:
		toGarbageStr = "0"+toGarbageStr
	return toGarbageStr

Vous pouvez l'exécuter puis lancer:

>> fdZeroGarbage(50, 4)

Ce qui renvoie:

>> "0050"

Explication des lignes:

def fdZeroGarbage(toGarbage, zeroNumber):

Cette ligne sert à définir le nom de la procédure ainsi que les arguments:

  • fdZeroGarbage est le nom de la procédure.
  • toGarbage est la valeur de base.
  • zeroNumber est le nombre de caractère que devra contenir la chaine renvoyé par la procédure.
toGarbageStr = str(toGarbage)

la fonction str() renvoie son contenu mais de type "string". (5 devient: "5" et donc, n'est plus un nombre, mais le caractère 5). Ici, nous créons une nouvelle variable (toGarbageStr) qui sera la version "stringué" de la valeur entré (toGarbage). Si cette procédure est inutile si l'entrée est déjà de type string, elle est cependant nécessaire pour la suite si ce n'est pas le cas.

while len(toGarbageStr) < zeroNumber:

La fonction len() renvoie la longueur de la chaine de caractère (ou de la liste, ou d'autres choses) donné. On comprend ici pourquoi l'argument de la procédure (toGarbage) doit être converti en string. En effet, comme le dis si bien le message d'erreur:

>>> len(5)
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    len(5)
TypeError: object of type 'int' has no len()

En revanche:

>>> len("5")
1

La ligne va exécuter le reste de la procédure: "Tant que la longueur de la chaine de caractère donné (toGarbageStr) est plus petite que le nombre de caractère voulu (zeroNumber)

toGarbageStr = "0"+toGarbageStr

On ajoute le caractère "0" à la chaine. ("5" devient: "05", "05" devient "005", etc...)

return toGarbageStr

A la fin de tout ça, on renvois la valeur de la chaine de caractère toGarbageStr.

Conclusion

Voici donc une petite procédure qui est utile car souvent répété. Avec ça vous pouvez faire pas mal de petites chose (renommage, tracking de fichier, etc...). C'est à vous de voir!

Ce modeste tuto est dans la ligné du précédent. A savoir, simple, rapide et, je l'espère, utile. (Vous pouvez même intégrer cette procédure dans le script précédent si vous voulez utiliser des fonctions dans d'autres fonctions... :baffed:

N'hésitez pas à me laisser un commentaire si vous rencontrez des problèmes avec. :hehe:

A plus!

Dorian