python 将“while循环”与“for循环”结合起来迭代一些数据

jac*_*ack 4 python for-loop while-loop python-3.x

我试图将一个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)
Run Code Online (Sandbox Code Playgroud)

这段代码会导致无限循环。我想要条件lo+ l[i]大于40时的输出;它应该停止循环并打印最终lo输出作为结果。我尝试了打印行的所有缩进方法,但无法得到我想要的。提前致谢。

Jan*_*rny 5

你会得到无限循环,因为你写了无限循环。您可能认为该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
Run Code Online (Sandbox Code Playgroud)

如果您想结束两个循环,则必须显式执行 - 例如,您可以使用布尔变量:

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)
Run Code Online (Sandbox Code Playgroud)