我是python的新手,当我尝试编写Collatz函数时,我发现pycharm向我显示了一行无法访问。我不知道为什么该功能无法运行代码
grepl
答案 0 :(得分:1)
在return
语句下相同作用域内的所有代码均无法访问,因为该函数将在此处完成其执行。根据您的情况,您将返回结果,因此无需再次运行该函数以进行打印。只需将其放入一个变量中并使用它即可:
def Collatz(numBer):
if numBer%2 == 0:
return numBer//2
else:
return 3*numBer+1
print('Please input the number:')
numBer = int(input())
while numBer != 1:
numBer = Collatz(numBer)
print(numBer)
答案 1 :(得分:0)
您好,欢迎来到堆栈溢出!
打印“不可达”的原因是由于打印之前返回。 return
结束了控制流,因此忽略了返回后的所有代码。基本上,控制流是这样的(基于您的功能):
“数字被2整除吗?”
“如果是,请给我该数字与2的整数除”。
“否则,请给我3 * + 1”
如果要在返回数字之前打印该数字,最好先将其存储到变量中,然后再返回该变量,如下所示:
def Collatz(numBer):
if Collatz % 2 == 0:
value = numBer // 2
else:
value = 3 * numBer + 1
print(value)
return value