【问题标题】:Question about double for loops and ranges关于双循环和范围的问题
【发布时间】:2022-12-28 23:30:42
【问题描述】:

由于我是 python 的初学者,所以我对为什么 j 会产生这样的结果感到困惑: 0 1个 0 1个 2个 在执行下面的代码时。 根据我的理解,我认为,i 代表 0-3,所以 j 不也代表数字 0-3。

for i in range(4):
    for j in range(i):
        print(j)

【问题讨论】:

  • 尝试调试您的代码以获得更好的理解。
  • 当 i 为 0 时它不打印。对于从 1 到 3 的每隔一次迭代,j 从 0 运行到 i-1。
  • 我在我的答案中添加了一张图片,展示了一种使用打印语句(对于本例)进行调试的简单方法,并了解正在发生的事情(如果有帮助)。
  • 您省略了第一个 0。除了观察到的行为,您还期望什么?为什么?

标签: python


【解决方案1】:

你的第一个 for 循环从 0 到 3。

所以我是 0,然后是 1,然后是 2,然后是 3。

J 将是 0,然后是 1,然后是 2,然后是 3。

所以在 range(0) 中打印 j 什么都不做,因为 range(0) 什么也不是。

然后你在 range(1) 中打印 j,它打印 0

然后你打印 j in range(2) 打印 0, 1

最后,您在范围 (3) 中打印 j,它会打印 0、1、2

【讨论】:

    【解决方案2】:

    外循环有 4 次迭代,i 设置为 0、1、2 和 3。

    第一个什么都不做,因为 range(0) 是一个空序列。

    第二个输出 0,range(1) 中的唯一值。

    第三个输出 0 和 1,即range(2) 中的值。

    最后打印 0、1 和 2,即range(3) 中的值。

    关键是对range 的内部调用使用i 的当前值来生成一系列值,这些值不会包括i 本身。

    【讨论】:

      【解决方案3】:

      在此示例中,for 循环 for i in range(4) 将在 i 小于停止值(在本例中为 4)时运行(循环的最后一次运行将在 i 为 3 时)。 range 函数中变量的默认起始值​​为 0。如果将两个参数传递给 range 函数,第一个将是起始值,第二个将是终止值(当变量不小于终止值时,循环不会再跑)。每次迭代,起始值都会增加 1。您可以通过将第三个参数传递给 range 函数来更改该数字。如果起始值和终止值相同,例如 0 和 0,for 循环将不会运行。

      它与嵌套 for 循环相同,就像在您的示例中一样。 希望我让你的 for 循环更容易一些。 ž

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 2012-02-03
        相关资源
        最近更新 更多