【问题标题】:Unexpected results from nested for loops嵌套 for 循环的意外结果
【发布时间】:2018-04-21 23:11:56
【问题描述】:

所以我正在学习 edx 课程并练习嵌套循环 而且我很难理解我是如何得到错误答案的。

这是练习

m = 0
for x in range (1,3):
    k = 0
    for y in range (-2,0):
        k = k + y
        m = m + k
print (m)

我知道当有一个嵌套循环时,第一个 for 循环将迭代一次,然后继续进行第二个 for 循环,这将迭代到完成,因此有了这些知识,我开始做数学运算:

0+-2      k=-2
0+-2      m=-2

-2+-1     k=-3
-2+-3     m=-5

-3+-2     k=-5
-5+-2     m=-7

0+-1      k=-1
-7+-1     m=-16

我最终得到 -16

【问题讨论】:

  • 为什么不每次通过循环打印出mk进行调试。
  • 你的困惑的关键是k=0

标签: python for-loop


【解决方案1】:

对于x 的每次迭代,您都将k 重置为0。您的计算假定 k 未重置。

您可以通过打印出km 的中间值来看到这一点:

m = 0
for x in range (1,3):
    k = 0
    for y in range (-2,0):
        k = k + y
        m = m + k
        print(k, m)

# -2 -2
# -3 -5
# -2 -7
# -3 -10

【讨论】:

  • 为什么 k 会重置而 m 不会?它与范围有关吗?
  • 因为您在for x in range(1, 3) 行下方设置了k=0。而m=0 是在该行上方定义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多