当循环变量递增时,为什么for循环中没有跳过迭代?

时间:2018-02-17 03:55:02

标签: python loops for-loop

def loop():
    for i in range (0,9):
        pass
        if i == 3:
            i = i +3

        print(i)

loop()

当前输出:

0
1
2
6
4
5
6
7
8

期待输出:

0
1
2
6
7
8
9

这是否必须对Python中创建堆栈帧的方式做些什么? 为什么即使我们递增i,迭代次数也不会减少?

1 个答案:

答案 0 :(得分:7)

i的值与循环执行没有任何关系。这由...... range(0, 9)(或range(9))确定。 for循环用于迭代迭代器,并迭代一定数量的迭代。如果您想跳过循环迭代,您可以使用条件控制continue来执行此操作。

但是,对于您的情况,我建议使用while循环,这种要求的惯用选择更为恰当。

i = 0
while i < 9:
    ... # something happens here
    if i == 3:
        i += 3
    else:
        i += 1

进一步阅读; When to use "while" or "for" in Python