Convertir un número a binario con una longitud fija

Digamos que obtengo un número aleatorio entre 1 y 127. Cambio el número a binario y 0b el 0b con el siguiente código:

 key_one= int(raw_input("Enter key (0 <= key <= 127): ")) if key_one in range(128): bin_key_one=bin(key_one)[2:] print bin_key_one else: print "You have to enter key (0 <= key <= 127)" 

Ahora quiero que tenga 7 caracteres de largo rellenando el principio con ceros según sea necesario. Creo que necesito usar un bucle for, pero ¿alguien me puede mostrar cómo hacerlo?

No tu no

 >>> '{0:07b}'.format(12) '0001100' 

Entonces sucede que Python tiene un método de cadena .zfill() para eso:

 >>> '1'.zfill(7) '0000001' >>> '10010'.zfill(7) '0010010' 

Con las nuevas cadenas F de Python 3.6, ahora puedes hacer:

 key_one = int(input("Enter key (0 <= key <= 127): ")) if key_one in range(128): bin_key_one = f'{key_one:07b}' print(bin_key_one) else: print("You have to enter key (0 <= key <= 127)") 

Prueba esto:

 for i in range(1, 127): '0'*(7-len(bin(i)[2:]))+bin(i)[2:]