Python:满足条件时退出while循环
我试图迭代我的列表,并计算每个元素和它后面的元素之间的差异。如果差值大于0(或正),则将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
向上
增加,将向下
减少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