Вывести строку только из нулей или единиц с 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