在python中输出for循环代码片段

时间:2017-06-26 18:03:22

标签: python python-3.x

i, j, k, u = 0, 5, 1, 3
for l in range(i, j, k):
    if l == u:
        print(l)
        u = 8
        i = 12
        j = 7
        k = -1
    else:
        print(l)

OUTPUT是:

0
1
2
3
4

为什么我们得到这个输出?

2 个答案:

答案 0 :(得分:1)

当Python第一次遇到for循环时,它会构建您请求的range对象:range(0, 5, 1)。构造完成后,它将控制循环,并且 not 将被重新评估。在循环执行期间更改变量值不会改变循环操作。

这意味着,就循环(或足够的优化器)而言,您的代码如下所示:

i,j,k,u=0,5,1,3
for l in range(i,j,k) :
    print(l)

 u=8
 i=12
 j=7
 k=-1

答案 1 :(得分:0)

不确定您期望的输出。但是,由于您更改了用于生成范围的参数值,因此我假设您希望输出更长。此时列表已经生成,但不会受到影响。

为了在循环期间实现增加循环范围的可能性,我建议你避免使用范围函数并考虑使用while而不是for。

https://docs.python.org/3/tutorial/controlflow.html

编辑:修剪既快又好我。