Я опробовал код, основанный на логике c, как описано вами, и поместил его в al oop для значений индекса 0,1,2. Кажется, для меня это нормально работает. Можете ли вы проверить l oop и что проверки состояния a_condition
, b_condition
и c_condition
оцениваются каждый раз в l oop? Кроме того, в примере есть 2 цикла:
- Внешний l oop перебирает значения индекса
- Внутренний l oop выполняет итерацию 4 раза для запуска 4 состояния
Например, в первом l oop для значения индекса 0 выполняется первое состояние для получения вывода {0: {'a': True, 'b': None, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
, за которым следует следующее состояние {0: {'a': True, 'b': False, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
Вот код и вывод по желанию.
while(index <=2):
count = 3
while(count>=0):
a_conditon = d.get(index, {}).get('a') is None
b_conditon = d.get(index, {}).get('b') is None
c_conditon = d.get(index, {}).get('c') is None
if (a_conditon):
d.setdefault(index, {})['a']= bool(random.getrandbits(1))
elif ((not a_conditon) and b_conditon):
d.setdefault(index, {})['b']= bool(random.getrandbits(1))
elif ((not a_conditon) and (not b_conditon) and c_conditon):
d.setdefault(index, {})['c']= bool(random.getrandbits(1))
elif ((not a_conditon) and (not b_conditon) and (not c_conditon)):
d.setdefault(index, {})['a']= d.get(index, {}).get('b')
d.setdefault(index, {})['b']= d.get(index, {}).get('c')
d.setdefault(index, {})['c']= bool(random.getrandbits(1))
print(d)
count -=1
index += 1
Вывод при работе для значений индекса 0,1,2
{0: {'a': True, 'b': None, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': True, 'b': False, 'c': None}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': True, 'b': False, 'c': True}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': None, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': None, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': False, 'c': None}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': False, 'c': True}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': None, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': None, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': False, 'c': None}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': True, 'b': False, 'c': False}}
{0: {'a': False, 'b': True, 'c': False}, 1: {'a': False, 'b': True, 'c': False}, 2: {'a': False, 'b': False, 'c': True}}