反转for循环内的等式

时间:2018-01-29 07:18:08

标签: python python-3.x

我试图扭转破折号的等式。

for x in range(1,6):
    for slashes in range(1,(x +1),+5):
        print("X" +("-" * hello), end = '')
        print("X  " + "X" + ("/" * x), end = '')
        print(("-" * x) +("X")) 

输入 -

xxx XXXXXX X---X X/-X X---X X//--X X---X X///---X X---X X////----X X---X X/////-----X

预期产出 -

xxx xxxxxx X---X X/-----X X---X X//----X X---X X///---X X---X X////--X X---X X/////-X

1 个答案:

答案 0 :(得分:0)

看起来你想要的是"X---X"令牌所界定的“进度条”。你想要的在线印刷:

xxx
xxxxxx    # I assume this is header?
X---X     # first token
X/-----X  # one slash
X---X
X//----X  # two slashes
X---X
X///---X  # three slashes
X---X
X////--X  # four slashes
X---X
X/////-X  # five slashes ends the output.

因此,每次迭代都应该有num_slashesnum_dashes,其中num_dashes总是常数bar_length减去斜杠数。

bar_length = 6
for num_slashes in range(1, 6):  # 1-5
    num_dashes = bar_length - num_slashes
    result = "/" * num_slashes + "-" * num_dashes
    result = "X" + result + "X"
# or:
results = ["X" + "/" * i + "-" * (6-i) + "X" for i in range(1, 6)]

然而这忽略了你的标题和你的标记,所以让我们穿插它们。

import itertools

header = ["xxx", "xxxxxx"]  # I don't know how you're generating that, so I assume it's static?
tokens = itertools.repeat("X---X")  # infinite sequence of "X---X"
final_result = itertools.chain.from_iterable([header, *zip(tokens, results)])

final_result是一个类似于以下内容的列表:

['xxx',
 'xxxxxx',
 'X---X',
 'X/-----X',
 'X---X',
 'X//----X',
 'X---X',
 'X///---X',
 'X---X',
 'X////--X',
 'X---X',
 'X/////-X']

所以要像上面一样打印它,我们必须使用' '.join

print(' '.join(final_result))