【问题标题】:Could someone explain to me why the return statement should be included in this code?有人可以向我解释为什么 return 语句应该包含在这段代码中吗?
【发布时间】:2019-02-06 12:11:30
【问题描述】:

我在 python 3 中编写了一个程序来执行 collat​​z 序列。这是我被要求做的:

编写一个名为collatz() 的函数,它有一个名为number 的参数。如果 数字是偶数,那么collatz() 应该打印number // 2 并返回这个值。 如果数字是奇数,则collatz() 应该打印并返回3 * number + 1。 然后编写一个程序,让用户输入一个整数并保持 在该数字上调用 collatz(),直到函数返回值 1。

记得将返回值从input() 转换为整数 int() 函数 - 否则,它将是一个字符串值。

这是我的代码:

def collatz(number):
    while number is not 1:

        if number % 2 == 0:
            number = number // 2
            print(number)

        else: 
            number = 3 * number + 1
            print(number)

p = int(input("Please input an integer: "))
print(p)
collatz(p)

我知道我没有添加输入验证,但除此之外我能否获得有关此代码的一些反馈?它按预期工作。

我还看到了this post,但我不明白他们为什么在 print 语句之后添加了 return 语句。

【问题讨论】:

标签: python-3.x return


【解决方案1】:

确实,当您从函数中return 时,您可以看到与 print 时相同的函数结果。但是您的计算机“程序”只有在您打印时才能看到该结果。打印是为了你的眼睛,退货是为了你的电脑。

为了提供更多上下文,当程序运行时,它会在内存中分配一些空间。您的函数的所有变量都存在于该内存中。当一个函数运行时,它使用该内存来声明变量,当函数完成时,这些变量被释放,内存空间也是如此。

要在函数完成后访问该内存空间中的变量,您需要使用returnprint 将把该变量放在内存的另一部分,总而言之,最终将用于在监视器上显示它,并且您的程序在后续使用中不容易访问。

因此,您可以收集到,根据用例,您可能只想使用 print、只使用 return 或两者兼而有之。

【讨论】:

    【解决方案2】:

    如果您只想“查看”您的号码,print() 就足够了。但是,如果您确实想要获取函数产生的结果,则需要 return number 在函数之外使用它。这样,您可以将return number 放在ifelse 的计算后面,然后在调用该函数后,您可以这样做

    nb_to_print = collatz(p)
    print(nb_to_print)
    

    这样,如前所述,您也可以在外部访问函数的返回值!

    您也不需要print(p),因为输入的数字已经在input()-statement 中看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2018-04-26
      • 2011-02-28
      • 1970-01-01
      相关资源
      最近更新 更多