добавление 0 в начале строки битов и 1 в конце строки битов для итерации N - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время у меня есть цепочка битов, представленная

1 #for n = 0

, и для n итераций я хочу добавить 0 впереди и 1 в конце цепочки битов

дляn = 1:

011  #added 0 and 1

для n = 2:

00111  #added 0 and 1 from previous bit string

для n = 3:

0001111  #added 0 and 1 from previous bit string

..

Я пытался:

bit_str = ""
for i in range(n):
    if i == 0: 
        full_b_tree = "1"
        print(full_b_tree)
    else:
        inc_one = "1"
        bit_str += inc_one
        inc_zero = "0"
        full_b_tree += inc_zero
        print(full_b_tree)

но для n = 3 я получаю

1
011
01110
0101110

Я впервые работаю с цепочками битов, так как я незнакомы с добавлением 0 в начале и 1 в конце, будем признательны за помощь в этом.

Ответы [ 4 ]

0 голосов
/ 10 октября 2018

Попробуйте следующий код:

def genBitStr(n):
    """ n: number of iteration"""
    for i in range(n):
        yield '1'.join(map(lambda e:e*i,['0', '1']))

for i, bit_str in enumerate(genBitStr(10)):
    print(i, bit_str)

0 1 1 011 2 00111 3 0001111 4 000011111 5 00000111111 6 0000001111111 7 000000011111111 8 00000000111111111 9 0000000001111111111

0 голосов
/ 10 октября 2018

Это должно помочь-

N=3
bit_string = '1'
for i in range(N):
    bit_string = '0' + bit_string + '1'
    print(bit_string)

Вывод-

011
00111
0001111
0 голосов
/ 10 октября 2018

Попробуйте этот код:

bit_str = ""
for i in range(n+1):
    if i == 0: 
        full_b_tree = "1"
        print(full_b_tree)
    else:
        inc_one = "1"
        full_b_tree = full_b_tree+inc_one
        inc_zero = "0"
        full_b_tree = inc_zero + full_b_tree
        print(full_b_tree)
0 голосов
/ 10 октября 2018

Хорошо, проблема была в суммировании следующим образом:

Вы были , выполнив следующее суммирование

full_b_tree += inc_zero

, что означает full_b_tree = full_b_tree + inc_zero, который добавит0 до конца.

Вы должны сделать

full_b_tree = inc_zero + full_b_tree

, который добавит 0 к передней части, что вам и нужно.Я также заменил range(n) на range(n+1), потому что range(3) поднимется только до 2.

n = 3
bit_str = ""
for i in range(n+1): # n replaced by n+1
    if i == 0: 
        full_b_tree = "1"
        print(full_b_tree)
    else:
        inc_one = "1"
        full_b_tree += inc_one
        inc_zero = "0"
        full_b_tree = inc_zero + full_b_tree # The summation corrected
        print(full_b_tree)

1
011
00111
0001111
...