Je veux obtenir une ficelle, aller de 0000 à 9999, je veux imprimer la chaîne suivante: J'ai essayé d'utiliser i Voulez-vous que Python ajoutez le préfixe imprimer "\ n n "Join ([Str (Num) pour Num in Plage (0, 9999)]) Code>, mais j'ai échoué, je reçois le numéro suivant: p>
8 Réponses :
Un moyen d'obtenir ce que vous voulez, c'est utiliser la formatage des chaînes: pour faire ce que vous voulez, faites ceci: p> print("\n".join(['{0:04}'.format(num) for num in range(0, 10000)]))
Non, ce n'est pas une solution parfaite. Défaut majeur là-bas. Si vous allez utiliser de grandes gammes comme 9999, vous devez utiliser xrange code> pour éviter d'attribuer toute la liste des chiffres. Cela peut ne pas faire une grande différence pour le faire une fois ou deux fois, mais si cette boucle est à l'intérieur d'une autre boucle à l'intérieur des appels de fonction récursive?
Ce que Michael a dit plus Supprimer [] (utilisez Gen EXP au lieu de la liste de liste).
@Michaeldillon, c'est seulement vrai dans Python 2. Dans Python 3, Plage Code> ==
xRange code> et
xRange code> est indéfini. L'OP a utilisé
plage code>, alors j'ai supposé qu'il utilise Python 3.
@yak, cela dépend également des circonstances. L'utilisation d'un Genex enregistre la mémoire mais est en fait un peu plus lente dans ce cas. Sur ma machine, de toute façon.
@senderlele: L'instruction imprimé code> qu'il utilisait et que vous avez copié est un cadeau mort pour Python 2, cependant.
@TIMPIETZCKER, bon point - Je n'ai pas attrapé l'incohérence, sans avoir utilisé beaucoup de python 3 à l'époque.
Beaucoup d'années sur la route, Python 3 est la norme, donc je l'ai modifié à la plage code>!
Essayez ceci
Simplement simplement en utilisant str.rjust :
print "\n".join([str(num).rjust(4, '0') for num in range(0, 1000)])
http://docs.python.org/library/stdtypes.html# str.zfill
Renvoie la chaîne numérique laissée remplie de zéros dans une chaîne de longueur largeur. Un préfixe de signe est traité correctement. La chaîne d'origine est retourné si la largeur est inférieure ou égale à len (s). p> blockQuote>
E.g.: p>
xxx pré> p>
str.zfill fonctionne également: p>
Imprimer ('\ N'.Join ([Str (Num) .Zfill (4) pour Num in Plage (0, 10000)])) Code> P>
Une autre façon de faire cela: ou p>
Cela devrait faire l'astuce de la gauche-remplissage de la chaîne:
Vous pouvez essayer ceci:
for i in range(9999): print(str(i).zfill(4)+"\n")
Vous ne pouvez pas obtenir une séquence se terminant par "9999" avec une plage (0, 9999); Les gammes de python n'incluent pas la limite supérieure. Utilisez la plage (10 ** 4) si vous souhaitez inclure 9999.