【问题标题】:Infinite loop in a nested while and for loop嵌套 while 和 for 循环中的无限循环
【发布时间】:2020-01-25 09:54:19
【问题描述】:

代码用于生成 3d 聚合物的珠位置。它正在进入一个无限循环。我无法弄清楚错误。

import numpy as np
import math as m

atoms = 249
pos = [[]]
sigma = 1.0
pos[0] = [0, 0, 0]

for p in range(atoms):
    md = 0.0
    c = 0
    n = p

    while md < sigma:
        rnd_vector = (2 * (np.random.rand(3))) - [1, 1, 1]
        rnd_vector = np.round(rnd_vector, 6)

        d = m.sqrt(sum(map(lambda x: x * x, rnd_vector)))

        rnd_vector = [x / d for x in rnd_vector]

        next_pos = [pos[p][x] + rnd_vector[x] for x in range(3)]

        c += 1

        for i in range(n):
            temp = [rnd_vector[x] - pos[i][x] for x in range(3)]
            td = m.sqrt(sum(map(lambda x: x * x, temp)))

            if i == 0:
                md = td

            if td < md:
                md = td

    pos.append(next_pos)

【问题讨论】:

    标签: python loops nested


    【解决方案1】:

    在不知道程序到底应该做什么的情况下很难判断,但是,无限循环的原因是在第一次迭代中,当n=p=0时,最里面的循环永远不会执行,因此@987654322 @ 永远不会更新。

    如果你将内部循环更改为for i in range(n+1):,那么程序最终会终止,尽管我不知道它是否还在做它应该做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 2023-03-02
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多