[英]Python : Exit while loop when condition is met
我试图遍历我的列表并计算每个元素与其后面的元素之间的差异。 如果差值大于 0(或正数),则up
递增并向down
1(如果大于 0)。 同样,如果差异小于 0,则down
递增并向up
减少 1(如果大于 0)。 如果up
或down
超过设置为 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
显然这是行不通的,因为我一直陷入无限循环并且无法弄清楚我做错了什么。
while 条件是错误的。 当up
或down
低于limit
时,循环会继续进行,因此即使up=1000
也不会停止,只要down<3
。 你想要的是while (up < limit) and (down < limit)
。
不要使用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
问题在于你的情况。 你说如果up
或down
超过设置为 3 的limit
,你想退出程序。所以 while 循环的条件需要设置为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):
所以完整的程序将是
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.