嵌套for循环输出结果不符合预期的技术咨询
分析嵌套循环代码的执行过程与结果偏差原因
先把你的代码贴出来方便对照:
m = 0 for x in range (1,3): k = 0 for y in range (-2,0): k = k + y m = m + k print (m)
首先得明确几个基础点:
range(1,3)会生成1和2两个值,所以外层循环会执行2次range(-2,0)会生成**-2和-1**两个值,所以每次内层循环会完整迭代2次- 每次进入外层循环时,
k都会被重置为0(这是你可能忽略的关键点)
接下来我们逐次拆解执行流程:
第一次外层循环(x=1)
- 初始化
k = 0 - 内层循环第一次迭代(y=-2):
k = 0 + (-2) = -2 - 内层循环第二次迭代(y=-1):
k = -2 + (-1) = -3 - 内层循环结束,执行
m = 0 + (-3) = -3
第二次外层循环(x=2)
- 再次初始化
k = 0(这里很重要!不是接着上次的k值继续算) - 内层循环第一次迭代(y=-2):
k = 0 + (-2) = -2 - 内层循环第二次迭代(y=-1):
k = -2 + (-1) = -3 - 内层循环结束,执行
m = -3 + (-3) = -6
最后print(m)输出的就是**-6**。
你之前的计算偏差主要出在两个地方:
- 误以为内层循环每次只执行一次,但实际上
range(-2,0)包含两个元素,内层会跑两次 - 忽略了每次外层循环开始时
k都会被重置为0,不是在上一次的k基础上累加
这样一步步走下来,结果就完全符合预期啦~
内容的提问来源于stack exchange,提问作者yeah
相关产品推荐
相关产品推荐

