numeros - str en python
Mostrar número con ceros iniciales (16)
Aquí estás:
print "%02d" % (1,)
Básicamente % es como printf
o sprintf
.
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
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, de esta manera:
Python 3.6.5 (default, May 11 2018, 04:00:52) [GCC 8.1.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 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 >>>
Basándome en tus consejos, dejo mi función de trabajo. 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
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 que las introdujo.
La forma pitónica 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 esto:
print ''{0:02d}''.format(1)
O otra solución.
"{:0>2}".format(number)
Puedes usar str.zfill
:
print str(1).zfill(2)
print str(10).zfill(2)
print str(100).zfill(2)
huellas dactilares:
01
10
100
Si se trata de números que tienen uno o dos dígitos:
''0''+str(number)[-2:]
o ''0{0}''.format(number)[-2:]
Use una cadena de formato - http://docs.python.org/lib/typesseq-strings.html
Por ejemplo:
python -c ''print "%(num)02d" % {"num":5}''
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)
print(''{:02}''.format(1))
print(''{:02}''.format(10))
print(''{:02}''.format(100))
huellas dactilares:
01
10
100
s=1
s="%02d"%s
print(s)
el resultado será 01
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
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.