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输出作为结果。我尝试了打印行的所有缩进方法,但无法得到我想要的。提前致谢。
你会得到无限循环,因为你写了无限循环。您可能认为该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)
| 归档时间: |
|
| 查看次数: |
27521 次 |
| 最近记录: |