我试图遍历我的列表并计算每个元素与它后面的元素之间的差异。如果差值大于 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
显然这是行不通的,因为我一直陷入无限循环,无法弄清楚我做错了什么。
答案 0 :(得分:3)
while 条件错误。当 up
或 down
低于 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)
问题出在您的病情上。您说如果 up
或 down
超过设置为 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):