我编写了一个程序来在python 3中执行collatz序列。这是我被要求做的事情:
编写一个名为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语句。
答案 0 :(得分:0)
如果您只想“看到”您的电话号码,那么print()
就足够了。但是,如果您实际上想获取函数产生的结果,则需要return number
才能在函数外部使用它。这样,您可以将return number
放在if
和else
中的计算之后,然后在调用该函数之后就可以进行
nb_to_print = collatz(p)
print(nb_to_print)
这样,如前所述,您也可以在函数外部访问函数的返回值!
由于您已经在print(p)
语句中看到了输入的数字,因此您也不需要input()
。
答案 1 :(得分:0)
的确,当您从某个功能return
时,可以看到与您print
相同的功能结果。但是您的计算机“程序”只有在打印时才能看到该结果。印刷品代表您的眼睛,退货则代表您的计算机。
为了给您更多的上下文,在程序运行时,会在内存中分配一些空间。函数的所有变量都位于该内存中。当一个函数运行时,它将使用该内存来声明变量,而当函数完成时,这些变量将被释放,并且该存储空间也将被释放。
要在完成该功能后访问该内存空间中的变量,您需要使用return
。 print
会将变量放入内存的另一部分,以进行汇总,并最终将其用于显示在监视器上,并且程序以后将无法轻易访问该变量。
因此,根据使用情况,您可能希望仅使用print
,仅使用return
或同时使用两者。