Python 而loop不能满足构造参数值的条件

Python 而loop不能满足构造参数值的条件,python,while-loop,Python,While Loop,我想重复计算步骤,直到值在定义的范围内,例如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 i

我想重复计算步骤,直到值在定义的范围内,例如
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)
将numpy导入为np
从数学导入*
进口警告
警告。过滤器警告(“忽略”)
N=1000
Omo=np.零((N,))
Omo[0]=0.24
Omn=np.零((N,))
对于范围(1,N)内的i:
R=np.random.uniform()
num=0
尽管如此:
num+=1
Omn[i]=Omo[i-1]+0.01*np.random.normal()
L=2*Omn[i]#仅用于测试的任意方程
如果L>R:
Omo[i]=Omn[i]
其他:
Omo[i]=Omo[i-1]
如果(Omo[i]0.29)或num>100:
打破
打印(Omo[i],L)
如果“
Om
大于0.29,并且
Om
小于0.2”,则在数学上不可能。从你描述的情况来看,我怀疑你想要的是
,而不是

if Omo[i] > 0.29 or Omo[i] < 0.2:
    break
你能从那里继续吗


此外,我强烈建议您仔细阅读课堂材料和一两篇教程,以便学习推荐的编程实践。有意义的变量名、大写和小写字母的首选用法以及各种其他小技巧可以为您省去很多麻烦,并让您更快地得到帮助。

为什么我必须不断回答您的问题?:) 你被误解了。 只要转动代码的符号

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 (0<Omo[i]<0.29) or num>100:
                break
print(Omo[i],L)
为True时:
num+=1
Omn[i]=Omo[i-1]+0.01*np.random.normal()
L=2*Omn[i]#仅用于测试的任意方程
如果L>R:
Omo[i]=Omn[i]
其他:
Omo[i]=Omo[i-1]

if(0
Omo[i]我觉得0.29不合适。你能同时说出一个小于零和大于0.29的数字吗?请查看这个可爱的博客寻求帮助。你还没有定义任何范围;事实上,
0.2
没有出现在你的程序中。你没有描述你希望它做什么,你的变量名也没有解释任何事情。你已经“我们帮助你特别困难。@凯文,我想说的是,
Om
大于
0.29
,如果
Om
小于
0.2
,就在这两者之间休息吧values@Prune我想
Om
保持在
0.2
0.29
之间。那么,你能告诉我该怎么办吗?可以吗我问得不好。我想要一个介于0.2和0.29之间的值。因此,如果小于0.2和大于0.29,我就不接受。我的意思是0.2和0.29之间的数字,比如0.23,0.287,0.265好。我相信我在编辑你的帖子时已经澄清了这一点。
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 (0<Omo[i]<0.29) or num>100:
                break
print(Omo[i],L)