Python 在for循环中反转方程式
我正试图把破折号的方程式颠倒过来Python 在for循环中反转方程式,python,python-3.x,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
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
看起来您需要的是一个由
“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\u斜杠
和num\u破折号
,其中num\u斜杠
始终是一个常数bar\u 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))
请提供输入和预期输出您能添加一个示例吗?这样更容易理解你的问题。这不是我从你的代码中得到的输出。还有什么是
你好
(我想是3)?另外,范围(1,x+1,5)中斜杠的是一个奇怪的构造,因为当x小于6时,它不作为for循环工作。我根本不理解这个问题。你说第一个字符串是输入,但是你的循环除了数字hello
(那是什么?)之外,没有使用任何输入参数。@Barmar同样,我不能理解这个问题的头绪,所以我产生了一个新的算法来适应(如果只是因为它听起来很有趣)