coloque un 0 delante de los números en una lista si son menos de diez (en python)

Escriba un progtwig de Python que le pedirá al usuario que ingrese una cadena de caracteres en minúsculas y luego imprima su código de dos dígitos correspondiente. Por ejemplo, si la entrada es ” home “, la salida debería ser ” 08151305 “.

Actualmente tengo mi código funcionando para hacer una lista de todos los números, pero no puedo agregar un 0 delante de los números de un solo dígito.

 def word (): output = [] input = raw_input("please enter a string of lowercase characters: ") for character in input: number = ord(character) - 96 output.append(number) print output 

Esta es la salida que obtengo:

 word() please enter a string of lowercase characters: abcdefghijklmnopqrstuvwxyz [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] 

Creo que puedo necesitar cambiar la lista a una cadena oa enteros para hacer esto, pero no estoy seguro de cómo hacerlo.

output.append("%02d" % number) debería hacerlo. Esto utiliza las operaciones de formateo de cadenas de Python para realizar el relleno cero a la izquierda.

O, use la función incorporada diseñada para hacer esto – zfill() :

 def word (): # could just use a str, no need for a list:  output = ""  input = raw_input("please enter a string of lowercase characters: ").strip()  for character in input:    number = ord(character) - 96 # and just append the character code to the output string:    output += str(number).zfill(2)  # print output return output print word() please enter a string of lowercase characters: home 08151305 
 output = ["%02d" % n for n in output] print output 
 ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26'] 

Python tiene una operación de formateo de cadenas [ docs ] que funciona de manera muy parecida a sprintf en C y otros idiomas. Usted da sus datos, así como una cadena que representa el formato en el que desea que los datos. En nuestro caso, la cadena de formato ( "%02d" ) solo representa un número entero ( %d ) que es 0 rellenado hasta dos caracteres ( 02 ).

Si solo desea mostrar los dígitos y nada más, puede usar el .join() string .join() [ docs ] para crear una cadena simple:

 print " ".join(output) 
 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 

Tenga en cuenta que después de la liberación de Python 3, las operaciones de formateo% están en proceso de salida, de acuerdo con los documentos de la biblioteca estándar de Python para 2.7. Aquí está la documentación sobre los métodos de cadena ; str.format un vistazo a str.format .

La “nueva forma” es:

 output.append("{:02}".format(number))