是否有一种优雅的方式来打印这个字符串?

时间:2018-02-09 12:33:36

标签: string python-3.x list

在尝试创建一段代码以证明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!')

1 个答案:

答案 0 :(得分:1)

我会保持简单并在每个输出行执行一个print

counter, history = formulate(int(input("In: ")))
for idx, x in enumerate(history):
    print("{} | {}".format(idx, x))
print('Done!')