python combine';while循环';与';对于循环';遍历某些数据

python combine';while循环';与';对于循环';遍历某些数据,python,Python,我对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时,我想要一个输出,停止循环并给出最终的

我对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'输出或结果。我尝试了打印行的各种缩进方法,但都没有得到我想要的。请对此代码发表评论。提前谢谢

您的中断取消了内部循环

这将有助于:

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)
l=[0,1,2,3,4]
停止=错误
lo=0
虽然(不停止):
lo+=1
对于范围内的i(len(l)):
如果不是l[i]请尝试以下方法:

l=[0,1,2,3,4]
lo=0

for i in l:
    lo+=1
    if not l[i]<3:
        break
    print(lo)
l=[0,1,2,3,4]
lo=0
对于l中的i:
lo+=1

如果不是l[i]你得到无限循环,因为你写了无限循环。您可能认为,
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

while(True):#您不需要外部无限循环,也不必自己管理索引(请参见文档中的)


我将条件
如果值不<3:
更改为
如果值>=3:
,以提高可读性。

尝试在纸上一步一步地进行,您将看到实际发生的情况,或者添加日志/打印以查看每个步骤中发生的情况。您试图实现的目标并不清楚。您想要什么输出?您应该始终尝试避免中断,因为中断通常会使代码更难理解。我正在尝试获得lo输出,因为l[i]>3条件不满足。
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)
l = [0,1,2,3,4]
for index, value in enumerate(l):
    if value >= 3:
         break
    print(index)