这是一道 Python 3 问题,使用 for 循环
为什么 print(num-1) 仍在范围 4 处执行?在我看来,当范围为 4 时,它应该跳过 print(num-1) 并直接转到 else:print(num)。
for num in range(4):
print(num - 1)
else:
print(num)
正确的输出是:-1 0 1 2 3 我的问题是为什么不应该是:-1 0 1 2 4
谢谢。
我尝试使用:
num = 0
while num != 4:
print(num - 1)
num += 1
else:
print(num)
我得到了我期望的结果:-1 0 1 2 4
生成
range(4)
的值:0、1、2、3。循环遍历每个值并将它们分配给 num。
在循环内部,
print(num - 1)
对 num 的每个值运行。逐步执行:
一旦循环完成,
else
块就会执行。num
从上次迭代开始的值仍为 3。所以
print(num)
输出 3。因此,最终的输出是:
-1 0 1 2 3
else
仅当for
完成(否break
)时才会运行。循环for
将连续将 num 设置为 0、1、2、3,打印 -1、0、1、2。然后else
打印 的最终值为num
3。range
永远不会生成 4。您可能来自 C 背景,for(i=0;i<4;i++)
当变为 4 时会退出循环i
。我相信循环结束后它会停止改变 num 的值。
简化示例
输出为:
0, 1, 2, 3, 3
我希望这有帮助!