python combine';while循环';与';对于循环';遍历某些数据
我对python和编程都是新手。我试图结合“while循环”和“for循环”来迭代一些列表,但我得到了无限循环。这是密码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时,我想要一个输出,停止循环并给出最终的
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)