Converting a number to binary with a fixed length

Say I get a random number between 1 and 127. I change the number to binary and remove the 0b from it with the fallowing code:

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)"

Now I want to make it 7-characters long by padding the beginning with zeros as necessary. I think I need to use a for loop, but can someone show me how to do it?


Solution 1:

No you don't.

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

Solution 2:

So it happens that Python has a string method .zfill() for that:

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

Solution 3:

With Python 3.6's new f-strings, you can now do:

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)")