Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python while循环不能正常工作_Python_While Loop - Fatal编程技术网

为什么Python while循环不能正常工作

为什么Python while循环不能正常工作,python,while-loop,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,

我正在运行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))
将numpy导入为np
np.随机种子(1)
VVV=列表(np.随机.均匀(10010000500))
muj=[1/(VVV[j]*(1/70)/年/小时,适用于范围(500)]
wj=列表(np.随机.均匀(1,5500))
rholist=list(np.random.uniform(0,0.02500))
lambdaj=[rholist[i]*muj[i]/wj[i]表示范围(500)内的i]
tauIj=列表(np.random.uniform(20/年,40/年,500))
对于范围(500)内的j:
当lambdaj[j]>0.17或lambdaj[j]=1时:
rholist=list(np.random.uniform(0,0.02500))
lambdaj=[rholist[i]*muj[i]/wj[i]表示范围(500)内的i]
tauIj=列表(np.random.uniform(20/年,40/年,500))

我首先创建
VVV
muj
wj
,和
rholist
。然后,我想创建一个
lambdaj
tauIj
列表,满足
lambdaj
的每个元素都以
0.0005
0.17
为边界,并且
tauIj
lambdaj
中每个元素的叉积严格小于
1
。我不知道我哪里做错了。顺便说一句,即使列表中的一项不满足这些条件,我也有意对整个列表重新采样。

基本上,根据我从评论中了解到的,如果发现“坏”值,则需要对所有内容重新采样,然后从一开始就重新检查。您不能在
python
中的
for
循环中这样做,而是在
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
j=0
当j<500时:
如果lambdaj[j]>0.17或lambdaj[j]=1:
j=-1#从头开始
j+=1

但我对需要重新采样的次数不承担任何责任,因此在重新启动之前打印(j)可能是一个好主意,这样您就可以知道您的条件是否可能存在于500个样本空间中。

“无法正常工作”-可能意味着很多事情。这种情况下的问题是什么?你知道吗,如果你在第50项中有一个“坏”值,并且你会对所有东西重新采样,那么现在你有可能在第17项中有一个“坏”值,例如,但你不会检查它,因为你会从第50项继续向前走?@Aryerez,你很好地解决了我做错的地方。我有问题。有什么解决方案的建议吗?