为什么"对于范围(5)"中的num如果在循环之前num = 10有什么影响?

时间:2016-11-02 20:15:12

标签: python

我给了以下程序,并且我被要求写下它打印的内容:

num = 10
for num in range(5):
    print(num)
print(num)

我的回答是:

10

我的理由是num已被定义为10,因此它不能在(0,5)范围内,因此我们可以跳过此循环。然后,我们简单地写下num是什么:10。

答案非常不同:

0
1
2
3
4
4

这是怎么回事?当num在开始时被定义为10时,最后一行怎么可能打印4?

4 个答案:

答案 0 :(得分:5)

当你这样做时:

for num in range(5):
    print(num)

您通过num分配给num = 10的值被for循环覆盖。在循环中,您的num从0变为4.当for循环结束时,它将值保存为4。当你执行print num时,它会在循环外打印4,因为它在for内保留了最后指定的值。

答案 1 :(得分:4)

您正在将$(function() { // your code here... }); (布尔运算符)与inin语法的一部分)混合。

以下程序可能就是您的想法:

for

在测试程序中,n遍历>>> n = 10 >>> if n in range(5): ... print(n) ... >>> print(n) 10 中的值,打印这些值。然后它将再次打印最后指定的值,因此重复4。

答案 2 :(得分:1)

for循环会将num的值从0更改为4,你所想的是像if num in range(5)那样会询问num是否介于(0,5)之间

答案 3 :(得分:0)

只要for in range循环开始,它就会覆盖num的值。因此,num以值10开始,进入for循环,然后将其值设置为0,打印0,num设置为1,打印1,依此类推。

在for循环之后,再次打印num,其新值(循环的最后一个值)4。