gpt4 book ai didi

python - 列表输出被复制

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:49 25 4
gpt4 key购买 nike

我创建了一个简单的递归函数来确定数字是偶数还是奇数,对它们执行数学运算,并将它们附加到列表中:

iter_list = []
def function(n):
iter_list.append(n)
if n < 2:
print iter_list
print iterations
pass
elif n % 2 == 0:
even = n / 2
iter_list.append(even)
collatz(even)
elif n % 2 == 1:
odd = (3 * n) + 1
iter_list.append(odd)
collatz(odd)
else:
print "Code not working."
pass

stdin = input("Number")
print collatz(stdin)
iterations = len(iter_list) - 1

当我用 276 运行函数时,输出是:

Number[276, 138, 138, 69, 69, 208, 208, 104, 104, 52, 52, 26, 26, 13, 13, 40, 40, 20, 20, 10, 10, 5, 5, 16, 16, 8, 8, 4, 4, 2, 2, 1, 1]

这是我所期望的,除了每个数字有两个实例,而不是一个。我该如何解决这个问题?

最佳答案

让我们看看当 n == 4 时会发生什么:

def function(n):
iter_list.append(n)
if n < 2:
print iter_list
print iterations
pass
elif n % 2 == 0:
even = n / 2
iter_list.append(even)
collatz(even)
...
  1. 在第 2 行,我们附加 4
  2. 在第 9 行,我们追加 2
  3. 我们调用 collat​​z(2)
  4. 在第 2 行,我们附加 2
  5. 在第 9 行,我们附加 1
  6. 我们调用collat​​z(1)

请注意,我们添加了两次 2!也许您应该只在函数的开头附加到列表,而不是在条件语句中附加。

关于python - 列表输出被复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28709376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com