我想重复计算步骤,直到值在定义的范围内,例如0.2
到0.29
。当这个代码运行时,我们看到值超过了0.29
,在某些情况下,我们有0.01
甚至是-0.1
,它是负数。
我该怎么解决这个问题
import numpy as np
from math import *
import warnings
warnings.filterwarnings("ignore")
N=1000
Omo = np.zeros((N,))
Omo[0]=0.24
Omn = np.zeros((N,))
for i in range (1,N):
R=np.random.uniform()
num=0
while True:
num+=1
Omn[i]=Omo[i-1]+0.01*np.random.normal()
L=2*Omn[i] # Arbitrary equation just for test
if L>R:
Omo[i]=Omn[i]
else:
Omo[i]=Omo[i-1]
if (Omo[i]<0 and Omo[i]>0.29) or num>100:
break
print(Omo[i],L)
为什么我要不断地回答你的问题?:) 你被误解了。 把密码的符号转过来就行了
如果
Om
大于0.29,并且Om
小于0.2,则在数学上是不可能的。根据你的描述,我怀疑你想要的是or
,而不是and
这解决了直接的逻辑问题,而不是总体控制问题。这表示如果
Omo
不在该范围内,就离开循环。你的声明的目的是留在循环中,直到它进入该范围。应该编码到循环控制中,比如你能从那里继续吗
另外,我强烈建议您仔细阅读课堂资料和一两个教程,这样您就可以学习推荐的编程实践。有意义的变量名、首选的大写和小写字母以及其他各种小技巧可以为您省去很多麻烦,并更快地获得帮助
相关问题 更多 >
编程相关推荐