python将“while loop”与“for loop”结合起来,以遍历一些

2024-03-29 09:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python和编程都是新手。我试图将while loop和for loop结合起来遍历一些列表,但是我得到了无限的循环。这是密码

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'输出或结果。我试过每一种印刷线缩进的方法,但都得不到我想要的东西。请对此代码发表评论。提前谢谢。


Tags: 代码inlooptrue密码lo列表for
3条回答

你得到无限循环是因为你写了无限循环。您可能认为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)

你的休息取消了内环

这将起作用:

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

for i in l:
    lo+=1
    if not l[i]<3:
        break
    print(lo)

相关问题 更多 >