【发布时间】:2020-03-21 02:35:46
【问题描述】:
我真的很好奇这个。
我有一个循环遍历列表的 for 循环。在 for 循环中,我有一个 while 循环,我想循环直到满足条件。当while循环的条件满足时,停止while循环,移动到list的下一项,重新开始while循环。
示例代码如下:
course_ids = [1,2,3,4,5]
loop_control = 0
counter = 0
for ids in course_ids:
while loop_control == 0:
counter = counter + 1
if counter == 2:
loop_control = 1
问题是当while循环条件满足时,就完全跳出for循环了。
如何让 for 循环在其中使用 while 循环按预期工作?
【问题讨论】:
-
是什么让你认为它也跳出了 for 循环?确实,当 while 循环的条件不满足时(
loop_control == 1),对于每个后续的 for 循环迭代,情况仍然如此。从技术上讲,for 循环仍在继续,迭代并没有做太多。 -
事实上,您的
while结构将循环两次。在第一次迭代中,counter将被设置为1,在第二次迭代中,它将被设置为2。if counter==2语句随后将变为有效。此时loop_control将设置为1。在随后的循环尝试中,表达式loop_control==0将计算为False,while循环将失败。for循环的第二次迭代将继续进行。while循环的任何后续迭代都将失败,因为loop_control仍将等于1。 -
如果你想在每次
for循环迭代之后重复while,你需要在@987654342之前将loop_control(可能还有counter)重置为0@,而不是在for之前。 -
不错。谢谢你做到了。我添加了这个
python if counter != len(course_ids): loop_control = 0
标签: python list while-loop