有人可以向我解释为什么返回语句应包含在此代码中?

问题描述 投票:0回答:2

我写了一个程序在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
2个回答
0
投票

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

nb_to_print = collatz(p)
print(nb_to_print)

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

你也不需要print(p),因为输入的数字已经在input()语句中看到了。


0
投票

确实,当你从一个函数return时,你可以看到你的函数的结果与你print时相同。但是,只有打印时,您的计算机“程序”才能看到该结果。打印适用于您的眼睛,返回适用于您的计算机。

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

要在函数完成后访问该内存空间中的变量,您需要使用returnprint会将该变量放在内存的另一部分中,总结并最终将用于在监视器上显示它,并且您的程序无法轻松访问以供后续使用。

所以你可以收集一下,根据用例,你可能只想使用print,只使用return或两者兼而有之。

© www.soinside.com 2019 - 2024. All rights reserved.