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

时间:2021-02-16 00:17:59

标签: python

我试图遍历我的列表并计算每个元素与它后面的元素之间的差异。如果差值大于 0(或正值),则增加 up 并将 down 减 1(如果它大于 0 )。类似地,如果差异小于 0,则增加 down 并将 up 减少 1(如果大于 0)。如果 updown 超过设置为 3 的 limit,我想退出循环。

我的代码:

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

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

3 个答案:

答案 0 :(得分:3)

while 条件错误。当 updown 低于 limit 时循环继续进行,因此即使在 up=1000 时它也不会停止,只要 down<3。 您想要的是 while (up < limit) and (down < limit)

答案 1 :(得分:1)

不要使用 while ,你可以在 for 循环的最后使用 if 条件来打破它:

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

答案 2 :(得分:0)

问题出在您的病情上。您说如果 updown 超过设置为 3 的 limit,您要退出程序。因此需要将 while 循环的条件设置为 {{1 }},然后才执行循环体。像这样的东西。

while up is less than limit AND down is also less than limit

或者你也可以使用括号(在这种情况下无关紧要)

while up < limit and down < limit:

所以完整的程序将是

while (up < limit) and (down < limit):