我是python的新手,也是编程的新手。我试图将'while循环'与'for循环'结合起来迭代一些列表,但我得到无限循环。这是代码
l=[0,2,3,4]
lo=0
for i in range(len(l)):
while (True):
lo+=1
if lo+l[i]>40:
break
print(lo)
与此代码类似,我得到相同的无限循环我希望输出当条件'lo + l [i]大于40时停止循环并给出最终'lo'输出或结果。我尝试了每种打印线缩进的方法,但无法得到我想要的。请评论此代码。提前致谢。
答案 0 :(得分:1)
你得到无限循环,因为你写了无限循环。您可能认为break
语句会以某种方式“神奇地”知道您不想仅仅结束for循环,而是结束while循环。但是break
总是会打破一个循环 - 最里面的循环。这意味着你的代码实际上是这样做的:
while (True): # <- infinite while loop
lo += 1
for i in range(len(l)): # <- for loop
if not l[i] < 3:
break # <- break the for loop
print(lo)
# while loop continues
如果你想结束两个循环,你必须明确地做 - 例如, 你可以使用布尔变量:
keep_running = True
while (keep_running):
lo += 1
for i in range(len(l)):
if not l[i] < 3:
# this will effectively
# stop the while loop:
keep_running = False
break
print(lo)
答案 1 :(得分:0)
你的休息会取消内循环
这将有效:
l=[0,1,2,3,4]
stop = False
lo=0
while( not stop):
lo+=1
for i in range(len(l)):
if not l[i]<3:
stop = True
break
print(lo)
答案 2 :(得分:0)
试试这个:
l=[0,1,2,3,4]
lo=0
for i in l:
lo+=1
if not l[i]<3:
break
print(lo)
答案 3 :(得分:0)
您不需要外部无限循环,并且您不必自己管理索引(请参阅文档中的enumerate)。
l = [0,1,2,3,4]
for index, value in enumerate(l):
if value >= 3:
break
print(index)
我将条件if value not < 3:
更改为if value >= 3:
以提高可读性。