我对Python比较陌生,我决定尝试编写一个相对简单的collatz猜想,用户可以输入一个数字(整数)。代码只是一个调用自身的简单函数。i是一个列表,它应该将函数计算的每个数字追加到它后面。我是执行Python脚本的新手,我尝试过使用空闲shell来运行代码。它会问我要什么号码,但当我输入一个号码时,什么也不会打印出来?我确定我只需要编辑一小部分代码(或者可能这都是错误的yikes),但是有人知道为什么我的脚本没有返回任何结果吗?抱歉,谢谢。 代码如下:
l = input("Enter a number: ")
l = int(l)
i = []
def collatz(n):
if n==1:
return i
if n%2 == 0:
n = n/2
i.append(n)
return collatz(n)
else:
n = ((n*3) + 1) / 2
i.append(n)
return collatz(n)
print(i)
collatz(l)
在您的
print
之前有三个return
,其中一个在else
语句中,这意味着至少要执行其中一个,因此您的print
甚至不能被执行,您应该将它移到函数定义之后以查看某些内容:查看有关^{} 的更多信息。片段:
正如其他人所提到的,函数中的所有执行路径都以
return
语句结尾,因此print
调用是不可访问的。因此,如果希望打印n
或i
的每个值,则需要将调用移动到它可以访问的地方。;)另外,代码中有一点冗余。你不需要
在
if
和else
分支中,可以将它们移到if...else
块之外。在这是您的代码的修改版本。我还将
^{pr2}$/
运算符改为//
,这样除法的结果将是整数。在输出
相关问题 更多 >
编程相关推荐