【问题标题】:Python for loop increment [duplicate]Python for循环增量[重复]
【发布时间】:2021-01-28 04:16:32
【问题描述】:

这是如何工作的,而 for 循环增量不起作用?

for i in range(0,10):
   if i == 3:
       i = i + 1
       continue
   print(i)

【问题讨论】:

  • 这个工作正常,请给出不起作用的代码
  • 在每次迭代中,i 被替换为 range 中的下一个值,与之前对其值的任何更改无关。
  • 可以尝试调试了解流程。

标签: python python-3.x for-loop increment


【解决方案1】:

在提供的代码中,当您尝试在带有 range 的 for 循环中使用 i 时,它总是会更改为函数中 range 提供的数字,而无需查看对 i 所做的增量。所以基本上如果你尝试list(range(0, 10)),这会给你[0, 2, 3, 4, 5, 6, 7, 8, 9]。因此,for 会一一浏览该列表,而无需考虑是否对 i 进行了任何更改。

如果看到了

loop_1: i=0
loop_2: i=1
loop_3: i=2
loop_4: i=3 (here now you increment value by 1), i=4
loop_5: i=4 (but the for loop was going though the list from range function so the change didn't do anything)
loop_6: i=5 (and so on until 9)

【讨论】:

    【解决方案2】:

    代码,

    for i in range(0,10):
       if i == 3:
           i = i + 1
           continue
       print(i)
    

    输出将是,

    0
    1
    2
    4
    5
    6
    7
    8
    9
    

    分解代码,

    for i in range(0, 10)

    for 循环运行 i=0 到 i=9,每次都将 i 初始化为 0 到 9 的值。

    if i == 3:
     i = i + 1
     continue
    print(i)
    

    当i = 3,上述条件执行时,执行i=i+1然后continue的操作,这看起来让你感到困惑,所以continue所做的是它会跳转执行开始下一次迭代而不执行循环中的代码,即print(i)不会被执行。

    这意味着对于i 的每次迭代,循环都将打印i,但是当i = 3 时,if 条件将执行并且continue 被执行,从而开始循环以进行下一次迭代,即 i= 4,因此不打印 3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-14
      • 2016-05-02
      • 1970-01-01
      • 2020-02-06
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      相关资源
      最近更新 更多