Вывести строку только из нулей или единиц с random.randrange

import random

bg=[];cncd=[];
a=random.randrange(0,2);
bg.append(a);
while len(cncd)<3:
    if not cncd:
        cncd.append(a);
    if a==cncd[0]:
        cncd.append(a);
    else:
        cncd.clear(); cncd.append(a);
print(bg);

Ожидаемый вывод:

000 или 111 - в конце мешанины из нулей и единиц.

Получаемый:

0 или 1 - и это единственные значения, без мешанины)

bd - список для всех значений, то есть в начале допустима мешанина, главное, чтобы последними были 3 подряд 0 или 1.

cncd - список вот как раз для совпадающих нулей или единиц, если новое значение равно значению, что есть в списке, то оно туда попадает, если не равно, то попадает туда после очистки списка. Так он и заполняется до длины 3-х значений.

в дальнейшем планирую вывести 10 таких строк из 0 и 1 с 3 совпадениями в конце каждой строки.


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Вы, наверное, хотели печатать биты до тех пор пока значение не повторится три раза подряд?

import random

for _ in range(10):
    bp = -1
    c = 0
    while c < 3:
        b = random.randrange(2)
        print(b, end='')
        if b == bp:
            c += 1
        else:
            bp = b
            c = 1
    print()
$ python bits.py
1101010110011000
111
000
10111
1101000
111
11000
0110101000
1000
00110111

$ python bits.py
1000
110100111
11001000
010110111
1101000
111
00111
0101000
010111
00111
→ Ссылка