为什么Python while循环无法正常运行

时间:2019-10-15 05:48:31

标签: python while-loop

我正在运行while循环,无法调试以下代码。你能帮忙吗?

import numpy as np
np.random.seed(1)

VVV = list(np.random.uniform(100, 10000, 500))
muj = [1/(VVV[j]*(1/70)/year/hour) for j in range(500)]
wj = list(np.random.uniform(1, 5, 500))
rholist = list(np.random.uniform(0, 0.02, 500))
lambdaj = [rholist[i]*muj[i]/wj[i] for i in range(500)]
tauIj = list(np.random.uniform(20/year, 40/year, 500))

for j in range(500):
    while lambdaj[j]>0.17 or lambdaj[j]<0.0005 or tauIj[j]*lambdaj[j] >= 1:
        rholist = list(np.random.uniform(0, 0.02, 500))
        lambdaj = [rholist[i]*muj[i]/wj[i] for i in range(500)]
        tauIj = list(np.random.uniform(20/year, 40/year, 500))

我首先创建VVVmujwjrholist。然后,我想创建一个lambdajtauIj列表,以满足lambdaj的每个元素以0.00050.17为界,以及{中的每个元素的叉积{1}}和tauIj严格小于lambdaj。我不知道我在哪里做错了。顺便说一句,即使列表中的一项不满足这些条件,我也有意重新采样整个列表。

1 个答案:

答案 0 :(得分:0)

基本上,根据我从评论中了解到的信息,如果您发现“不良”值,则需要重新采样所有内容,然后从头开始重新检查。您无法在for的{​​{1}}循环中执行此操作,而只能在python循环中执行此操作。因此将其更改为:

while

但是我对您需要重新采样多少次不承担任何责任,因此在重新启动j = 0 while j < 500: if lambdaj[j]>0.17 or lambdaj[j]<0.0005 or tauIj[j]*lambdaj[j] >= 1: <your resamples...> j = -1 #To start from the beginning j += 1 之前可能是个好主意,因此您可能会知道如果您的条件可能存在500个样本空间。

相关问题