【发布时间】:2018-04-12 07:33:12
【问题描述】:
我最初对这段代码有疑问,因为我在最后一行代码中缺少“n =”,因此陷入了无限循环。
在这一点上,虽然我明白需要纠正什么,但我不明白为什么。为什么 'collatz(n)' 不足以调用函数并使用 n 作为其变量?如果有人能简单地解释一下(这里是初学者),我将不胜感激。
def collatz(number):
if number % 2 == 0:
print (number // 2)
return number // 2
elif number % 2 == 1:
print (3 * number + 1)
return 3 * number + 1
print ('Please enter a number.')
n = int(input())
while n != 1:
n = collatz(n)
【问题讨论】:
-
collatz(n)的值是collatz返回的值。你必须对它做点什么。collatz(n)在自己的行上就像2 + 3在自己的行上一样——它是 5,然后……把它扔掉。 -
@Ry:或者类似地,这和
n + 3和n = n + 3之间的区别是一样的。 -
你的函数返回一个结果。您想在下一个函数调用中重用该结果,函数中的局部变量本身不会挂起。
-
如果您输入了
42作为数字,那么在循环中重复调用collatz(42)没有多大意义。您想要获取collatz(42)的结果并将该结果传递给对collatz(...)的next 调用。然后你不断重复,获取结果,将其传递给下一个调用,直到结果为1。
标签: python variable-assignment