首页 > 解决方案 > 函数的嵌套循环

问题描述

我有代码来绘制粒子轨迹,直到填充 3D 矩阵的一部分中的所有空间。这是基于粒子的最终位置。对穿过身体的辐射束中粒子的简化模拟。

我能够使用 for 循环将一大堆粒子轨迹绘制在一起,并获得填充所有空间所需的数量。我是这样做的,'''

n = 100
for n in range(particles):
    Path(ax,body)
    if body==[[[0 for k in range(10)] for j in range(10)] for i in range(10)]:
        print('Tumor destroyed after particle number', n)
        break
plt.show()

'''

我得到粒子数(n)。但我想循环多次,然后得到填充矩阵中所有空间(破坏肿瘤)所需的平均数(n)。我试着做'''

trials=10
for i in range(trials): 
    for n in range(particles):
        Path(ax,body)
        if body==[[[0 for k in range(10)] for j in range(10)] for i in range(10)]:
            print('Tumor destroyed after particle number', n)
            break

''' 但我只是从代码的第一部分获得相同的 n 值 10 次。我如何让它每次都执行新的第一段代码并获得不同的 n 值来平均它们。

if 语句是粒子路径结束的条件。

出来的数字应该都不同,因为我使用随机数进行计算。计算是在 Path 函数内部完成的。我只想多次运行第一个代码片段,但不知道如何执行它。

标签: python

解决方案


您需要在每次试验中从初始body(可能)的新副本开始。ax

这些方面的东西:

import copy

# No need to create this more than once.
empty_body = [[[0 for k in range(10)] for j in range(10)] for i in range(10)]

trials=10
for i in range(trials):
    test_body = copy.deepcopy(body) 
    for n in range(particles):
        Path(ax, test_body)
        if test_body == empty_body:
            print('Tumor destroyed after particle number', n)
            break

推荐阅读