有人可以向我解释为什么将return语句包含在此代码中吗?

时间:2018-08-31 12:48:11

标签: python-3.x return

我编写了一个程序来在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语句。

2 个答案:

答案 0 :(得分:0)

如果您只想“看到”您的电话号码,那么print()就足够了。但是,如果您实际上想获取函数产生的结果,则需要return number才能在函数外部使用它。这样,您可以将return number放在ifelse中的计算之后,然后在调用该函数之后就可以进行

nb_to_print = collatz(p)
print(nb_to_print)

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

由于您已经在print(p)语句中看到了输入的数字,因此您也不需要input()

答案 1 :(得分:0)

的确,当您从某个功能return时,可以看到与您print相同的功能结果。但是您的计算机“程序”只有在打印时才能看到该结果。印刷品代表您的眼睛,退货则代表您的计算机。

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

要在完成该功能后访问该内存空间中的变量,您需要使用returnprint会将变量放入内存的另一部分,以进行汇总,并最终将其用于显示在监视器上,并且程序以后将无法轻易访问该变量。

因此,根据使用情况,您可能希望仅使用print,仅使用return或同时使用两者。