在尝试创建一段代码以证明Collatz Conjecture时,我尝试在一行中格式化所有结果(如脚本的最后一行所示)。尽管输出看起来像所期望的那样,但最后一行特别复杂且冗长。我想知道是否有人可以将最后几行写在一起并且更好。谢谢!
PD:脚本的最后一行打印history = []列表的每个值,然后为其添加索引。反过来,10的输出看起来像这样:
$python collatz.py
In: 10
0 | 10
1 | 5
2 | 16
3 | 8
4 | 4
5 | 2
6 | 1
Done!
这是我的代码:(代码现已根据答案编辑:))
#!/usr/bin/env python3
import time
def formulate(number):
history = []
counter = 0
while True:
history.append(number)
if number == 1:
break
if number % 2 == 0:
number = number // 2
else:
number = number * 3 + 1
counter += 1
return counter, history
counter, history = formulate(int(input("In: ")))
for idx, x in enumerate(history):
print("{} | {}".format(idx, x))
print('Done!')
答案 0 :(得分:1)
我会保持简单并在每个输出行执行一个print
:
counter, history = formulate(int(input("In: ")))
for idx, x in enumerate(history):
print("{} | {}".format(idx, x))
print('Done!')