【问题标题】:Nested loops not decrementing properly嵌套循环没有正确递减
【发布时间】:2017-06-04 15:05:40
【问题描述】:

这是我的代码

    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]

【问题讨论】:

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


【解决方案1】:

我会大胆猜测,当您返回到外部循环语句时,j 会从 range 生成器接收它的值——它应该覆盖无意义的操作。

并且由于 i 的值(讨厌单字母变量名的另一个原因)返回到 0 - 再次,循环 - 并且 j 递增到 6,结果很明显。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      但是,这应该可以:

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

      【讨论】:

      • 'i' 和 J 不能互换。它必须是'i'然后是'j'
      • 然后继续并在我为您列出的代码中交换 i 和 j:它们的顺序没有区别(尽管习惯使用 i 表示外部循环,使用 j 表示内部循环)。
      猜你喜欢
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多