2011-03-10 6 views
4

Comment utiliser python pour générer un compteur à quatre chiffres?Compteur Python à quatre chiffres

range(0,9999) 

aura 1 chiffres, 2 chiffres et 3 chiffres. Nous voulons seulement 4 chiffres.

à savoir 0000 à 9999

Bien sûr, la façon la plus simple Pythonic.

+1

Votre 'range()' appel ne produit pas réellement 9999 , mais s'arrêtant à 9998. Ceci est dû au fait que l'argument "end" de range() 'est une limite inférieure à la limite, comme dans" générer tous les nombres commençant par 0 et moins de 9999 ". Vous devez utiliser 10000 à la place. –

+0

J'ai compris. Merci. – LynxLee

+2

Si vous optez pour la mise en forme de chaîne, [veuillez préférer] (http://docs.python.org/library/stdtypes.html#str.format) str.format (* args, ** kwargs) à% formatting.' [ "{0: 0> 4}". Format (i) pour i dans xrange (10)] ' – Paolo

Répondre

10

Formatez la chaîne à remplir avec des 0. Pour obtenir une liste de 0 à 9999 rembourré avec des zéros:

["%04d" % x for x in range(10000)] 

Même chose fonctionne pour 5, 6, 7, 8 zéros, etc. Notez que cela vous donnera une liste de chaînes. Il n'y a aucun moyen d'avoir une variable entière complétée avec des zéros, donc la chaîne est aussi proche que possible.

La même opération de format fonctionne également pour les ints individuels.

4

Vous ne le faites pas. Vous mettez en forme à 4 chiffres lors de la sortie ou du traitement.

print '%04d' % val 
11

Peut-être str.zfill pourrait aussi vous aider:

>>> "1".zfill(4) 
'0001' 
+0

Cela doit d'abord transformer un entier de la plage (0,10000) en une chaîne ..... – eyquem

+0

@eyquem: vous avez raison! – nkint

0

Et pour aller vraiment trop loin,

In [8]: class Int(int): 
    ...:  def __repr__(self): 
    ...:   return self.__str__().zfill(4) 
    ...:  
    ...:  

In [9]: a = Int(5) 

In [10]: a 
Out[10]: 0005 
+1

Quelqu'un a été exposé à trop de Java :) – jkerian

+0

Comment obtenez-vous des nombres à 4 chiffres dans la gamme (0,10000)? '' pour x dans xrange (Int (0), Int (1000)) '' ne fonctionne pas. – eyquem

1

si vous souhaitez choisir la mise en forme de chaîne, comme beaucoup suggéré, et que vous utilisez un Python pas moins de 2.6, prenez soin d'utiliser la mise en forme de chaîne dans sa dernière incarnation. Au lieu de:

["%04d" % idx for idx in xrange(10000)] 

it is suggested d'opter pour:

["{0:0>4}".format(i) for i in xrange(1000)] 

En effet, cette dernière manière est utilisée en Python 3 comme langage par défaut pour les chaînes de format et je suppose que c'est une bonne idée d'améliorer votre code portabilité vers les futures versions de Python.

Comme quelqu'un l'a dit dans les commentaires, en Python 2.7+ il n'y a pas besoin de préciser l'argument de position, de sorte que cela est aussi valable:

["{:0>4}".format(i) for i in xrange(1000)] 
Questions connexes