嵌套循环没有正确递减

时间:2017-01-19 19:14:11

标签: python python-3.x loops for-loop nested-loops

这是我的代码

    for j in range(5,8):
        for i in range(6):
            print("[{}][{}]".format(i,j))
            j-=1

这就是我所得到的。在第一个完整循环之后,右边的j值应该从5减少到4。查看代码以获得进一步说明

    [0][5]
    [1][4]
    [2][3]
    [3][2]
    [4][1]
    [5][0]

    [0][6] # Here, I want the j value or 6 to decrement to 4 but it's incrementing
    [1][5]
    [2][4]
    [3][3]
    [4][2]
    [5][1]

    [0][7]
    [1][6]
    [2][5]
    [3][4]
    [4][3]
    [5][2]

这就是我想要的

    [0][5]
    [1][4]
    [2][3]
    [3][2]
    [4][1]
    [5][0]

    [0][4] # Here, I want the j value to decrement to 4  
    [1][3]
    [2][2]
    [3][1]
    [4][0]

    [0][3]
    [1][2]
    [2][1]
    [3][0]

3 个答案:

答案 0 :(得分:1)

在不知道你实际想要完成的是什么的情况下,它有点难以回答。

但是,这应该有效:

for i in range(6, 3, -1):
    for j in range(i):
        print("[{}][{}]".format(j, i-j-1))
    print

答案 1 :(得分:0)

我猜想当你返回外部循环语句时, j range 生成器接收它的值 - 正如它应该的那样,覆盖无意义的操作。

因为 i 的值(仇恨单字母变量名称的另一个原因)返回0 - 再次,通过循环 - 而 j 增加到6,结果很明显。

答案 2 :(得分:0)

你永远不应该这样修改循环变量。我认为每个新循环都会重置变量。看来你想要两种数字组合的组合。请改用itertools。

https://docs.python.org/3/library/itertools.html