#python #python-2.7 #spyder
#python #python-2.7 #spyder
Вопрос:
Я программирую симуляцию твердых тел Эйнштейна в Python, если вы не знаете, что это такое, это нормально, это относительно просто, когда сводится к коробкам и шарам, мне нужно распределить шары между коробками, а коробки могут содержать более одного шара, но, очевидно, одна коробка не может быть разделена на несколько шаров. Пользователь вводит количество шаров и ящиков, поэтому они не являются константами. Я новичок в программировании, и логические тупики в этом убивают меня, если у кого-то есть идея, которая была бы отличной.
для контекста, в аналогии со ссылкой на мой код, блоки являются генераторами, а шары — энергией.
Логический путь, которым я сейчас занимаюсь, заключается в создании списка, длина которого равна количеству ящиков, а отдельные элементы просто являются «порядком» ящиков, и делают то же самое для шаров, создавая список с количеством шаров, равным длине. Я был на идее просто найти вероятность попадания мяча в одну коробку и, по сути, выполнять подбрасывание монет для каждой из коробок с этой вероятностью вместо 1/2, но это не гарантирует, что каждый заданный мяч помещается в коробку, и все они должны быть учтены.
Na=raw_input( "What is the amount of oscillators within object 1? (a positive integer, Na)")
Nb=raw_input( "What is the amount of oscillators within object 2? (a positive integer, Nb)")
N_tot=int((raw_input( "What is the total amount of oscillators within the system? (a positive integer that=Na Nb)")))
NaList=[]
Na_calc=int(Na)
While Na_calc>0
NaList.append(Na_calc)
Na_calc=Na_calc-1
В конечном итоге ожидается, что я смоделирую кучу разных «шариковых капель», где энергия распределяется между генераторами, и проведу дополнительный анализ того, как некоторые из них будут взаимодействовать, но ранее упомянутая проблема распределения списка по списку решит самую большую логическую проблему,
Спасибо.. удачного
Ответ №1:
Я чувствую, что приведенный выше пример может быть не тем, о чем вы просите в своем вопросе, но, возможно, вы могли бы использовать понимание списка, чтобы упростить то, что вы делаете в своем примере
na_list = [n for n in range(na_calc, 0, -1)]
Однако я чувствую, что ваш вопрос, скорее всего, будет решен с помощью чего-то вроде zip.
https://docs.python.org/3.7/library/functions.html#zip
Комментарии:
1. спасибо за ваш ответ, серьезно, zip — это аккуратно и было бы полезно, но я не просто добавляю каждый элемент из двух списков вместе в точном порядке, потребуется использовать оператор if относительно того, получает ли поле мяч, но zip может быть полезен позже. и спасибо за ярлыки кода
2.
na_list = [n for n in range(na_calc, 0, -1) if my_random_condition(n)]
тогда может быть полезно.