【发布时间】:2019-08-27 08:58:45
【问题描述】:
首先我知道这是一个非常问的问题。编写一个名为 collatz() 的函数,它有一个名为 number 的参数。如果 number 是偶数,那么 collatz() 应该打印 number // 2 并返回这个值。 如果 number 是奇数,则 collatz() 应该打印并返回 3 * number + 1。 然后编写一个程序,让用户输入一个整数并保持 在该数字上调用 collatz() 直到函数返回值 1。
def collatz(number):
return [number //2 if number %2 == 0 else 3*number + 1]
number = int(input('Number - \n'))
while number != 1:
result = collatz(number)
print(result)
我在我的程序中不明白为什么它会执行第一个操作并卡在第一个数字中。就像我输入 12 它返回 6 但由于永远打印 6 而卡在 while 循环中。我想了解这个程序具体出了什么问题。
【问题讨论】:
-
你永远不会更新
number,所以什么都不会改变。还有,为什么要在collatz返回一个列表? -
我认为这是编写 if else 序列@ThierryLathuille 的一种更紧凑的方式
-
只需删除
[ ],它会构建一个包含您的结果的列表。