Python循环:额外打印?

Python循环:额外打印?,python,function,loops,printing,for-loop,Python,Function,Loops,Printing,For Loop,我正在做一个关于Python编程的书后练习: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

我正在做一个关于Python编程的书后练习: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

提前谢谢,因为我没有其他人可以帮助我!:)

最后一行的打印(i)…..

分配给
i
的最后一个值是9,因此您的最后一行引用循环中发生的该值分配。虽然
9:729
是最后打印的内容,但它不是最后的作业

编辑:

为什么它不打印这样的东西:1:11 3:27 3 5:125 5 7:343 7:729

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

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
    print(i)
最后一行没有缩进导致它落在for循环之外。

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

因此,在您的例子中,
print(i,“:”,i**3)
是“body”。它将为
i
的每个值打印
i,“:”,i**3
,从1开始,到9结束

循环执行时,它将
i
的值更改为列表中的下一项

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

你想要的是:

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

对于循环的每次迭代,列表中的下一个值将分配给
i
。当循环终止时,
i
仍然是一个有效变量,列表中的最后一项已分配给它。打印的行为(
print(i,“:”,i**3)
不会影响
i
的值。它不会像您在注释中那样打印,因为最后一行没有缩进。Python中的缩进用于确定代码是否在循环中。我感谢所有帮助!谢谢!我现在明白了!这是我正在寻找的信息性答案。我想我需要休息一下,被相对简单的东西挂住了!别担心!坚持下去…一开始它让人难以承受,但它会变得更容易