1
votes

Imprimer un espace vide au préalable si un nombre est à 1 chiffre

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 commentaires

Remplacez str (e) par f "{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é ...;)


3 Réponses :


4
votes

Vous pouvez utiliser rjust:

'hi'.rjust(3)
' hi'

print(' '.join(str(e).rjust(2) for e in mylist))


1 commentaires

Exactement ce que je cherchais. Bref et simple. Merci beaucoup!



2
votes

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))


1 commentaires

Cela fonctionne bien! J'avais besoin de quelque chose comme la solution de @ Tdaw, mais la vôtre est une bonne alternative. Merci beaucoup!



1
votes

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))


1 commentaires

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. :)