Python:满足条件时退出while循环

Python:满足条件时退出while循环,python,Python,我试图迭代我的列表,并计算每个元素和它后面的元素之间的差异。如果差值大于0(或正),则将向上增加,将向下减少1(如果大于0)。同样,如果差值小于0,则将向下增加,将向上减少1(如果大于0)。如果向上或向下超过设置为3的限制,我想退出循环 我的代码: my_list = [13.04, 12.46, 13.1, 13.43, 13.76, 13.23, 12.15, 12.0, 11.55, 14.63] up = 0 down = 0 limit = 3 while (up < lim

我试图迭代我的列表,并计算每个元素和它后面的元素之间的差异。如果差值大于0(或正),则将
向上
增加,将
向下
减少1(如果大于0)。同样,如果差值小于0,则将
向下
增加,将
向上
减少1(如果大于0)。如果
向上
向下
超过设置为3的
限制,我想退出循环

我的代码:

my_list = [13.04, 12.46, 13.1, 13.43, 13.76, 13.23, 12.15, 12.0, 11.55, 14.63]

up = 0
down = 0
limit = 3

while (up < limit) or (down < limit) :
    for i in range(len(my_list)-1):
        diff = my_list[i] - my_list[i+1]
        print (diff)
        if diff > 0:
            up +=1
            if down > 0:
                down -=1
        elif diff < 0:
            down +=1
            if up > 0:
                up -=1
my_list=[13.04,12.46,13.1,13.43,13.76,13.23,12.15,12.0,11.55,14.63]
向上=0
向下=0
极限=3
而(上升<极限)或(下降<极限):
对于范围内的i(len(my_列表)-1):
diff=我的清单[i]-我的清单[i+1]
打印(差异)
如果差异>0:
向上+=1
如果向下>0:
向下-=1
elif差异<0:
向下+=1
如果向上>0:
上升-=1

显然,这是行不通的,因为我一直陷入无限循环,无法找出我做错了什么。

while条件是错误的。当
up
down
低于
limit
时,循环将继续运行,因此即使
up=1000
,只要
down问题出在您的情况下,循环也不会停止。您说过,如果
向上
向下
超过设置为3的
限制,您希望退出程序。因此,while循环上的条件需要设置为
,而up小于limit,down也小于limit
,然后才执行循环体。像这样的

while up < limit and down < limit:
上升<极限和下降<极限:
或者也可以使用括号(在这种情况下无所谓)

while(上升<极限)和(下降<极限):
因此,整个计划将是

my_list = [13.04, 12.46, 13.1, 13.43, 13.76, 13.23, 12.15, 12.0, 11.55, 14.63]

up = 0
down = 0
limit = 3

while up < limit and down < limit:
    for i in range(len(my_list)-1):
        diff = my_list[i] - my_list[i+1]
        print (diff)
        if diff > 0:
            up +=1
            if down > 0:
                down -=1
        elif diff < 0:
            down +=1
            if up > 0:
                up -=1
my_list=[13.04,12.46,13.1,13.43,13.76,13.23,12.15,12.0,11.55,14.63]
向上=0
向下=0
极限=3
当上升<极限和下降<极限时:
对于范围内的i(len(my_列表)-1):
diff=我的清单[i]-我的清单[i+1]
打印(差异)
如果差异>0:
向上+=1
如果向下>0:
向下-=1
elif差异<0:
向下+=1
如果向上>0:
上升-=1

不要使用while,您可以使用for循环最后一个中的if条件来中断它:

for i in range(len(my_list)-1):
    diff = my_list[i] - my_list[i+1]
    #print (diff)
    if diff > 0:
        up +=1
        if down > 0:
            down -=1
    elif diff < 0:
        down +=1
        if up > 0:
            up -=1
    if (up > limit)or (down > limit) :print(up);print(down);break
适用于范围内的i(len(my_列表)-1):
diff=我的清单[i]-我的清单[i+1]
#打印(差异)
如果差异>0:
向上+=1
如果向下>0:
向下-=1
elif差异<0:
向下+=1
如果向上>0:
上升-=1
如果(向上>限制)或(向下>限制):打印(向上);打印(向下);打破

虽然主要问题是将
更改为
,但这一点也有意义
for i in range(len(my_list)-1):
    diff = my_list[i] - my_list[i+1]
    #print (diff)
    if diff > 0:
        up +=1
        if down > 0:
            down -=1
    elif diff < 0:
        down +=1
        if up > 0:
            up -=1
    if (up > limit)or (down > limit) :print(up);print(down);break