Написал код для распада атомов, не могу вывести промежуточные цифры

Этот код пытается уменьшить кол-во атомов с шансом 0,5.Цикл состоит из самого кол-ва атомов, например, я беру 10 атомов, значит цикл в этом случае равен 10, спустя 10 проверок цикл поменяется, и в конце работы цикла ил, если не повезет, то до него записывается то число, что получилось в ходе работы кода. Он может убрать 1 атом или все 7 за цикл, мне нужно в ответ указать все числа, что получились за каждый цикл.

Пример работы: было 10 -прошло 10 циклов, стало 5,прошло 5 циклов, получилось 1.В ответе должно быть 10(начальное число),5,1.

    import random
a=[]
b=int(input())
i=0
l=0
z=b
p=0
k=b
while i<b:
    a.append(1)
    i+=1
while k>z/100:
    for x in range(1,len(a)+1):
        if k<=z/100:
             break
        print(x,"q")
        p+=1
        print(p,"p")
        f=random.randint(1,2)
        if f ==1:
            l+=1
            k-=1
            a.remove(1)
            print(len(a))
        
print(l,len(a),p//10)

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

Автор решения: OPTIMUS PRIME

Нужен дополнительный массив, куда будет добавляться текущее количество атомов после каждого «этапа» распада.

from random import random

atoms_init = 10  # int(input('Initial atoms > '))
atoms_curr = atoms_init

decay_info = [atoms_init] # Сюда будет записываться число атомов на каждом «этапе»

while atoms_curr > atoms_init / 100:
    for _ in range(atoms_curr):
        if atoms_curr <= atoms_init / 100:
            break

        if random() < 0.5: # дает дробные числа между 0 и 1. Если < 0.5 → попало в 50%
            atoms_curr -= 1

    decay_info.append(atoms_curr)

print('Done:', *decay_info) # Done: 10 7 3 2 2 2 0

Или, можно было без массива, прямо печатать print(atoms_curr, end = ' ') на каждой итерации, вместо append.

P.s. Трудно было вникать в однобуквенный код :) Для вас из контекста задачи очевидно, а со стороны не понятно, что за i, l, z, b, p, k. Поэтому принято давать переменным более осмысленные имена (или, при необходимости, оставлять расшифровку аббревиатур в виде комментариев)

→ Ссылка