【发布时间】:2021-11-26 03:08:53
【问题描述】:
我被要求完成此代码的其余部分:
def collatz_step(n):
if n % 2 == 0:
return n // 2
并编写一个 while 循环,将 n 设置为 collatz_step 给出的下一个值,直到它达到 1,并在每一步打印 n 的值。
我完成如下,应该给我10、5、16、8、4、2、1
def collatz_step(n):
if n % 2 == 0:
return n // 2
else:
return 3*n + 1
while n != 1:
n = collatz_step(n)
print(n)
collatz_step(3)
但我收到一条错误消息,提示未定义“n”?这部分具体,
while n != 1:
如何解决这个问题以获得正确的结果?
【问题讨论】:
-
错误信息非常清楚。
-
您的意思是让
while循环以某种方式成为collatz_step函数的一部分吗?目前还不清楚您期望n在那条线上有什么价值或为什么。 -
n仅在collatz_step函数的范围 内定义。while循环在该函数之外,其中确实没有定义n。 -
我可以不这样做吗?因为我想做的是当 n 不是 1 时,在
collatz_step(n)上运行 while 循环并打印出结果,直到 n 达到 1 -
在进入 while 循环之前,你从未告诉 python 你想要
n = 3。
标签: python function while-loop collatz