Mostrar el número con los ceros iniciales.

Dado:

a = 1 b = 10 c = 100 

¿Cómo muestro un cero inicial para todos los números con menos de dos dígitos?

Es decir,

 01 10 100 

En Python 2 puedes hacer:

 print "%02d" % (1,) 

Básicamente % es como printf o sprintf .


Para Python 3. + el mismo comportamiento se puede lograr con:

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

Para Python 3.6+, se puede lograr el mismo comportamiento con f-strings:

 print(f"{1:02d}") 

Puedes usar str.zfill :

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

huellas dactilares:

 01 10 100 

En Python 2.6+ y 3.0+, usarías el método de cadena format() :

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

o usando el incorporado (para un solo número):

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

Consulte la documentación de PEP-3101 para conocer las nuevas funciones de formato.

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

huellas dactilares:

 01 10 100 

O esto:

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

En Python> = 3.6 , puedes hacer esto de manera sucinta con las nuevas cadenas de caracteres que se introdujeron utilizando:

 f'{val:02}' 

que imprime la variable con nombre val con un valor de fill de 0 y un width de 2 .

Para su ejemplo específico, puede hacer esto muy bien en un bucle:

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

que imprime:

 01 10 100 

Para obtener más información sobre las cadenas de caracteres, eche un vistazo a PEP 498 donde se introdujeron.

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

resultados en:

 01 10 100 

Lea más información sobre el formato de cadena usando% en la documentación.

La forma pythonica de hacer esto:

 str(number).rjust(string_width, fill_char) 

De esta manera, la cadena original se devuelve sin cambios si su longitud es mayor que string_width. Ejemplo:

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

Resultados:

 01 10 100 

O otra solución.

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

Use una cadena de formato – http://docs.python.org/lib/typesseq-strings.html

Por ejemplo:

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

Utilizar:

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

O con el módulo de math :

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

Así es como lo hago:

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

Básicamente, zfill toma el número de ceros iniciales que desea agregar, por lo que es fácil tomar el número más grande, convertirlo en una cadena y obtener la longitud, como esto:

 Python 3.6.5 (predeterminado, 11 de mayo de 2018, 04:00:52) 
 [GCC 8.1.0] en linux
 Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
 >>> total = 100
 >>> imprimir (str (1) .zfill (len (str (total))))
 001
 >>> total = 1000
 >>> imprimir (str (1) .zfill (len (str (total))))
 0001
 >>> total = 10000
 >>> imprimir (str (1) .zfill (len (str (total))))
 00001
 >>> 

Basado en tus consejos, dejo que mi función funcione. Gracias.

 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 
 s=1 s="%02d"%s print(s) 

el resultado será 01

! / 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; 

mismo código que una imagen

Si se trata de números que tienen uno o dos dígitos:

'0'+str(number)[-2:] o '0{0}'.format(number)[-2:]