web-dev-qa-db-fra.com

Afficher le numéro avec les zéros au début

Donné:

a = 1
b = 10
c = 100

Comment afficher un zéro en tête pour tous les nombres de moins de deux chiffres?

C'est,

01
10
100
686
ashchristopher

En Python 2, vous pouvez faire:

print "%02d" % (1,)

Fondamentalement,% est comme printf ou sprintf.


Pour Python 3. +, le même comportement peut être obtenu avec:

print("{:02d}".format(1))

Pour Python 3.6+, le même comportement peut être obtenu avec les chaînes de caractères f:

print(f"{1:02d}")
713
Jack M.

Vous pouvez utiliser str.zfill :

print str(1).zfill(2) 
print str(10).zfill(2) 
print str(100).zfill(2) 

impressions:

01
10
100
762
Datageek

En Python 2.6+ et 3.0+, vous utiliseriez la méthode format() string:

for i in (1, 10, 100):
    print('{num:02d}'.format(num=i))

ou en utilisant la fonction intégrée (pour un numéro unique):

print(format(i, '02d'))

Voir la documentation PEP-3101 pour les nouvelles fonctions de formatage.

347
Ber
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))

impressions:

01
10
100
116
Kresimir

Ou ca:

print '{0:02d}'.format(1)

89
ajd

Dans Python> = 3.6, vous pouvez le faire de manière succincte avec les nouvelles chaînes f introduites en utilisant:

f'{val:02}'

qui imprime la variable nommée val avec un fill valeur de 0 et un width de 2

Pour votre exemple spécifique, vous pouvez le faire en boucle:

a, b, c = 1, 10, 100
for val in [a, b, c]:
    print(f'{val:02}')

qui imprime:

01 
10
100

Pour plus d'informations sur les chaînes de caractères, consultez PEP 498 où elles ont été introduites.

52
x = [1, 10, 100]
for i in x:
    print '%02d' % i

résulte en:

01
10
100

Lisez plus d’informations sur le formatage des chaînes en utilisant% dans la documentation.

50
nosklo

La façon pythonique de faire ceci:

str(number).rjust(string_width, fill_char)

De cette façon, la chaîne d'origine est renvoyée sous forme inchangée si sa longueur est supérieure à string_width. Exemple:

a = [1, 10, 100]
for num in a:
    print str(num).rjust(2, '0')

Résultats:

01
10
100
40
ZuLu

Ou une autre solution. 

"{:0>2}".format(number)
32
WinterChilly

Utilisez une chaîne de formatage - http://docs.python.org/lib/typesseq-strings.html

Par exemple:

python -c 'print "%(num)02d" % {"num":5}'
5
Airsource Ltd
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
2
nvd

Voici comment je le fais:

str(1).zfill(len(str(total)))

Fondamentalement, zfill prend le nombre de zéros que vous souhaitez ajouter. Il est donc facile de prendre le plus grand nombre, de le transformer en chaîne et d'obtenir la longueur, comme ceci:

 Python 3.6.5 (par défaut, 11 mai 2018, 04:00:52) 
 [GCC 8.1.0] sur linux 
 Tapez "aide", "copyright", "crédits" ou "licence" pour plus d'informations .
 >>> total = 100 
 >>> print (str (1) .zfill (len (str (total)))) 
 001 
 >>> total = 1000 
 >>> print (str (1) .zfill (len (str (total))))) 
 0001 
 >>> total = 10000 
 >>> print (str (1). zfill (len (str (total)))) 
 00001 
 >>> 
1
Roberto

Utilisation:

'00'[len(str(i)):] + str(i)

Ou avec le module math:

import math
'00'[math.ceil(math.log(i, 10)):] + str(i)
1
Linekio

df ['Col1'] = df ['Col1']. s'applique (lambda x: '{0: 0> 5}'. format (x)) (le nombre 5 correspond au nombre total de chiffres)

J'ai utilisé ce lien: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/

0

!/usr/bin/env python3

Copyright 2009-2017 BHG http://bw.org/

x = 5

while (x <= 15):
    a =  str("{:04}".format(x))
    print(a)
    x = x + 1;

même code qu'une image

0
Rupert Russell
s=1    
s="%02d"%s    
print(s)

le résultat sera 01

0
nidheesh

Sur la base de vos conseils, je laisse mon travail fonctionner. Je vous remercie.

def number2binlist(number, leading = 8):
    #Convert Binary to 0/1 list array with leading zeros, default 8
    bin2dec = int(str(bin(number))[2:])
    theformat = "{:0"+str(leading)+"d}"
    dec2str = list(theformat.format(bin2dec))
    output = [int(z) for z in dec2str]
    output.reverse()
    return output
0
Sandro De Simone