【问题标题】:In print of for loop function exit is value +1 than expected在 for 循环函数退出的打印中,值 +1 比预期的要高
【发布时间】:2019-09-02 09:12:44
【问题描述】:

我仍然是初学者,并试图解决我的初学者编码课程的任务。我不明白为什么在输入 1 程序中工作正常,但如果我输入 2 而不是值 66、132,它会打印下一个数字序列 132、198。我觉得我接近解决方案但不太确定我做错了什么.

i=int(input())
   for n in range(0, i):
       print(66*i)
       i=i+1

【问题讨论】:

  • 嗨。不要更改循环内的 i 。你可能打算做print(66*n) 而不是print(66*i) 反正
  • 我做了,但它随后打印序列 0,66,132,它需要从 66 开始打印。
  • @LaCodeM,使用for n in range(1, i)

标签: python for-loop iteration exit-code


【解决方案1】:

让我们一步一步来:

  • 你输入2,所以i的值以2开头。
  • range(0, i) 将是 range(0, 2) 并因此创建一个包含两个条目的范围(意味着循环的主体将执行两次)。
  • 在第一次迭代中,i 的值仍然是 2,因为它是从它开始的,而您还没有更改它。所以print(66*i) 将打印66*2 = 132
  • 现在你执行i = i + 1,所以i的值现在是3
  • 所以在第二次迭代中,i 的值为 3,print(66*i) 将打印 66*3 = 198
  • 现在 i 递增到 4(这无关紧要,因为 i 不再使用)然后循环结束,因为它经历了两次迭代。

n 的值在两次迭代期间分别为 0 和 1,但这并不重要,因为您从未使用过 n

【讨论】:

  • 我需要在第一次迭代时打印 1*n,在第二次迭代时打印 2*n,在第三次迭代时打印 3*n 等等。这很好,但是当我输入 1 时它从 0 开始。所以改为 1*66= 66,它打印 0*66=0。
【解决方案2】:

问题很简单:您将 66 乘以 i 而不是 n。使用print(66*n) 应该没问题。 i 输入为 2,所以 66*2 是 132。然后你增加 i,所以它变成 3,66 * 3 是 198。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多