【问题标题】:return statement vs. print statement?return 语句与 print 语句?
【发布时间】:2016-12-29 14:46:21
【问题描述】:

谁能解释为什么这段代码只打印 6? :)

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

print(func(4))

【问题讨论】:

  • 因为这是它应该做的。它正在打印函数的返回值。范围是互斥的,所以 1 + 2 + 3 = 6
  • 试试print(func(1))

标签: python printing return


【解决方案1】:

首先,由于您的代码在问题中的格式不正确,并且由于待编辑(我敢打赌会修复它),我无法对其进行编辑,我将假设您的代码应该看起来像这样:

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

print(func(4))

让我们一步一步地分解它。你的打印会调用func,给它数字4,然后打印出来的任何数字。所以控制跳转到func 并开始在那里处理,x 的数字为 4。您将结果初始化为 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。这个函数的作用是将0x - 1 的数字相加(至少对于正整数输入)。

【讨论】:

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