2016-08-22 153 views
-4

有人可以解释为什么这个代码只打印6? :)返回语句与打印语句?

def func(x): 
    result = 0 
    for i in range(x): 
     result = result + i 
    return result 

print(func(4)) 
+0

因为这就是它应该做的。它打印函数的返回值。范围是唯一的,所以1 + 2 + 3 = 6 – Li357

+0

试试'print(func(1))'。 – Zety

回答

0

首先,因为在这个问题你的代码没有被格式化正确的,我不能编辑它由于挂起的编辑(我敢打赌,修复它),我要去承担你的代码应该看起来像这样:

def func(x): 
    result = 0 
    for i in range(x): 
     result = result + i 
    return result 

print(func(4)) 

让我们一步一步分解它。您的打印将打电话func,给它4号,然后打印任何数字出来。所以控制跳转到func并开始在那里处理,编号为4的x。您将结果初始化为0,然后输入循环。 for i in range(x)会给你一个号码列表[0, 1, 2, 3](实际上不是一个列表,但我们可以用这种方式对待这个简单的解释)。对于该列表中的每个号码i,您将其添加到当前值result。所以result经过下列步骤:

result = 0 + 0 
result = 0 + 1 
result = 1 + 2 
result = 3 + 3 

result的最终值是6,其被返回,并打印。那就是你的6来自哪里。如果你打电话给func(5),你会得到10,因为它经历了相同的步骤,但增加了4个相同的计算。该功能的作用是将0中的数字加到x - 1(至少对于正整数输入)。

+0

哦,我明白了。我只是假定它会返回所有结果,而不仅仅是最后一个。所以,我期望看到: 0 1 3 6。 – Prince