2

我在 Python Programming: An Intro to Comp Sci 中做书后练习:

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
print(i)

这打印出来

1:1
3:27
5:125
7:343
9:729
9

我的问题是为什么它打印额外的 9?最后一个循环打印不是 9:729 吗?它必须与

print(i, ":", i**3)

因为如果我只是输入:

for i in [1,3,5,7,9]:
   print(i)

它只是打印

1
3
5
7
9

在此先感谢,因为我没有其他人可以帮助我!:)

4

3 回答 3

3

在 python for 循环中,循环的“主体”是缩进的。

所以,在你的情况下,print(i, ":", i**3)是“身体”。它将打印i, ":", i**3的每个值i,从 1 开始到 9 结束。

随着循环的执行,它会将 的值更改为i列表中的下一项。

一旦循环终止,它会继续执行下一行代码,这完全独立于 for 循环。因此,在 for 循环之后有一个命令,即print(i). 由于i上次设置为 9,因此该命令基本上意味着print(9).

你想要的是:

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
于 2013-01-15T00:28:19.547 回答
2

最后一行的 print(i) ...........

于 2013-01-15T00:20:39.610 回答
1

分配给的最后一个值i是 9,因此您的最后一行是指在循环中发生的这个值分配。虽然9:729是打印的最后一件事,但它不是最后一个作业。

编辑:

为什么不打印这样的内容:1:1 1 3:27 3 5:125 5 7:343 7 9:729 9?

如果您的代码缩进并看起来像这样,它将打印出来:

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
    print(i)

最后一行缺少缩进导致它落在 for 循环之外。

于 2013-01-15T00:21:13.950 回答