并排打印多行字符串

时间:2017-04-22 14:49:34

标签: python

我想从同一行的列表中打印项目。 我试过的代码:

dice_art = ["""
 -------
|       |
|   N   |
|       |
 ------- ""","""
 -------
|       |
|   1   |
|       |
 ------- """] etc...

player = [0, 1, 2]
for i in player:
    print(dice_art[i], end='')

输出=

ASCII0
ASCII1
ASCII2

我想要输出=

ASCII0 ASCII1 ASCII2

此代码仍会在新行上打印我的模具的ASCII艺术表示。我想在同一行打印它以节省空间并在一个屏幕上显示每个玩家的滚动。

4 个答案:

答案 0 :(得分:4)

由于dice_art的元素是多行字符串,因此比这更难。

首先,从每个字符串的开头删除换行符,并确保ASCII art中的所有行都具有相同的长度。

然后尝试以下

player = [0, 1, 2]
lines = [dice_art[i].splitlines() for i in player]
for l in zip(*lines):
    print(*l, sep='')

如果您对ASCII艺术应用所描述的更改,代码将打印

 -------  -------  ------- 
|       ||       ||       |
|   N   ||   1   ||   2   |
|       ||       ||       |
 -------  -------  ------- 

答案 1 :(得分:3)

你的盒子是多行的事实改变了一切。

根据我的理解,您的预期输出是:

 -------  -------
|       ||       |
|   N   ||   1   | ...and so on...
|       ||       |
 -------  ------- 

你可以这样做:

art_split = [art.split("\n") for art in dice_art]
zipped = zip(*art_split)

for elems in zipped:
    print("".join(elems))
#  -------  -------
# |       ||       |
# |   N   ||   1   |
# |       ||       |
#  -------  ------- 

N.B。您需要保证每行在输出中的长度相同。如果连字符的行比另一行短,则对齐将关闭。

将来,如果您提供预期的输出,您可以获得更好的响应。

答案 2 :(得分:0)

print(dice_art[i], end='')更改为:

  • print(dice_art[i], end=' '),(注意两个'之间的空格和前一个代码之后的,

如果要动态打印数据,请使用以下语法:

  • print(dice_art[i], sep=' ', end='', flush=True),

答案 3 :(得分:0)

连接命令应该这样做。

dice_art = ['ASCII0', 'ASCII1', 'ASCII2']
print(" ".join(dice_art))

输出结果为:

ASCII0 ASCII1 ASCII2