J'essaie de faire length = 001
in Python 3 mais chaque fois que je tente de l’imprimer, il tronque la valeur sans les zéros au début (length = 1
). Comment pourrais-je arrêter cela sans avoir à transtyper length
en chaîne avant de l'imprimer?
Utilisez la méthode d'aide zfill()
pour saisir à gauche toute chaîne, entier ou float avec des zéros.
Exemple d'utilisation:
print str(1).zfill(3);
# Expected output: 001
Description:
Appliquée à une valeur, zfill()
renvoie une valeur complétée à gauche par des zéros lorsque la longueur de la valeur initiale de la chaîne est inférieure à celle de la valeur appliquée width , sinon, la valeur initiale string telle quelle .
Syntaxe:
str(string).zfill(width)
# Where string represents a string, an integer or a float, and
# width, the desired length to left-pad.
Depuis python 3.6, vous pouvez utiliser fstring:
>>> length = 1
>>> print(f'length = {length:03}')
length = 001
Les entiers Python n'ont pas de longueur inhérente ni de nombre de chiffres significatifs. Si vous voulez qu'ils impriment d'une manière spécifique, vous devez les convertir en chaîne. Vous pouvez procéder de différentes manières pour spécifier des éléments tels que les caractères de remplissage et les longueurs minimales.
Pour ajouter un minimum de trois caractères avec des zéros, essayez:
length = 1
print(format(length, '03'))
Il y a plusieurs façons d'y parvenir, mais le moyen le plus simple de Python 3.6+, à mon avis, est ceci:
print(f"{1:03}")
Je suggère cette méthode laide, mais cela fonctionne length=1 lenghtafterpadding=3 newlength='0'*(lengthafterpading-len(str(length))+str(length)
Je suis venu ici pour trouver une solution plus légère que celle-ci!