J'ai donc une liste de nombres qui changent en fonction de l'entrée de l'utilisateur. À titre d'exemple, disons que ma liste est [26, 13, 51, 46, 9, 15] . J'utilise print ("" .join (str (e) pour e dans ma liste)) pour les imprimer sans virgules ni crochets et avec un espace entre les deux. Ce que je veux faire, c'est imprimer 2 espaces avant un nombre s'il est à un chiffre / en dessous de 10. Donc, la sortie que je voudrais avec l'exemple que j'ai donné serait 26 13 51 46 9 15 . Comment puis-je faire cela?
3 Réponses :
Vous pouvez utiliser rjust:
'hi'.rjust(3)
' hi'
print(' '.join(str(e).rjust(2) for e in mylist))
Exactement ce que je cherchais. Bref et simple. Merci beaucoup!
Vous pouvez utiliser le formatage de chaîne:
print(*("{:2d}".format(e) for e in mylist))
De plus, "" .join peut être remplacé par unpacking en raison de la valeur par défaut sep = '' de la fonction print :
print(" ".join("{:2d}".format(e) for e in mylist))
Cela fonctionne bien! J'avais besoin de quelque chose comme la solution de @ Tdaw, mais la vôtre est une bonne alternative. Merci beaucoup!
Est-ce que c'est ce que vous recherchez?
mylist = [26, 13, 51, 46, 9, 15]
for number in mylist:
if len(str(number)) == 1:
print(f" {number}")
else: print(str(number))
Oui, c'est ce dont j'avais besoin! Mais stupide, je n'aime pas mettre des accolades, donc la solution que j'ai utilisée était la suggestion de @Tdaw. C'est bien aussi! Merci beaucoup. :)
Remplacez
str (e)parf "{e: 2d}"(si sur Python plus ancien que 3.6:"{: 2d}". Format (e))@OndrejK. Cela fonctionne très bien, mais je suis un homme compliqué, et je n'aime pas l'apparence des accolades! :) Merci beaucoup pour votre suggestion!
Qu'on le veuille ou non, l'avenir est bouclé ...;)