Ответ 1
Нет, нет.
>>> '{0:07b}'.format(12)
'0001100'
Скажем, я получаю случайное число от 1 до 127. Я меняю номер на двоичный код и удаляю из него 0b
с помощью кода:
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)"
Теперь я хочу сделать его длиной 7 символов, заполнив начало нулями при необходимости. Я думаю, мне нужно использовать цикл for, но может ли кто-нибудь показать мне, как это сделать?
Нет, нет.
>>> '{0:07b}'.format(12)
'0001100'
Итак, Python имеет строковый метод .zfill()
для этого:
>>> '1'.zfill(7)
'0000001'
>>> '10010'.zfill(7)
'0010010'
С новым Python 3.6 новым f-strings вы можете теперь:
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)")
Попробуйте следующее:
for i in range(1, 127):
'0'*(7-len(bin(i)[2:]))+bin(i)[2:]