代码之家  ›  专栏  ›  技术社区  ›  Shivank

在python中使用for循环时出现意外输出

  •  0
  • Shivank  · 技术社区  · 7 年前
    name='ABCDE'
    length=len(name)
    
    for i in range(0,length):
        print(name[i],'\t',end='')
        print(i, '\t', end='')
        i+=1
        print(i,'\t',end='')
        print('hello')
    
    Output:
    A   0   1   hello
    B   1   2   hello
    C   2   3   hello
    D   3   4   hello
    E   4   5   hello
    

    我无法理解第二行输出。 在第二次迭代中,应在for循环中再次增加i的值,输出应为:

    C  2  3  hello
    

    在其他迭代中也是如此。

    1 回复  |  直到 7 年前
        1
  •  0
  •   vapurrmaid    7 年前

    如果我正确理解了这个问题,你就假设

    i+=1
    

    将影响 i 用于下一次迭代。

    语法 for i in range(): 在python中,意味着在每个迭代周期的开始, 将采用提供的下一个值 range() ,而不考虑正文中的赋值。

    就你而言,你有

    range(0, length)
    

    其计算结果为:

    range(0,5) # == [0,1,2,3,4]
    

    因此 接受价值观 0 通过 4

    要说服自己,请尝试以下方法:

    for i in range(0,5):
        print(i)
        i = 1000 # any number
    

    其中打印:

    0
    1
    2
    3
    4
    

    看见 Scope of python variable in for loop