2017-04-22 74 views
0

我想在同一行上打印列表中的项目。 我曾尝试代码:并排打印多行字符串

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艺术表现。我想将它打印在同一行上以节省空间并在一个屏幕上显示每个玩家的滚动情况。

+2

显示输出和预期输出。同时显示列表元素的值。我们需要一个最小,完整和可验证的例子。 –

+0

我已根据要求进行了编辑。 – Ozixic

+0

对不明确的含义。我已更新了更多信息。 – Ozixic

回答

4

由于dice_art元素是多行字符串,这将是比更硬。

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

请尝试以下

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 | 
|  ||  ||  | 
------- ------- ------- 
+0

谢谢你的帮助。除了顶部线条移动一个靠近每个印模的部分之外,这大部分工作。你能否澄清我应该如何从每个字符串的开头删除新行。 – Ozixic

+1

@Ozixic这就是为什么我建议*“确保ASCII艺术中的所有行具有相同长度”*;)在每个ASCII艺术中的第一行的末尾添加一个空格。如果您完全控制了多行字符串的定义方式,您可以简单地将''''和'-------'放在同一行上。否则,您可以稍微修改代码:'[dice_art [i] .strip('\ n')。splitlines()...]' – vaultah

+0

谢谢!我得到了正确的路线。你可以向noob解释这个for循环如何处理zip?我在文档中查找zip文件,但仍然感到困惑。 – Ozixic

0

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

  • print(dice_art[i], end=' '),如果要动态打印数据,使用下面的(注意其间的两个' S中的空间和你前面的代码后,

语法:

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

这不能解决问题。 –

+0

对不起,代码仍然打印在单独的行上,我在结束后添加了字符串中的空格,并在打印语句后添加了逗号。 – Ozixic

0

连接命令应该这样做。

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

输出将是:

ASCII0 ASCII1 ASCII2 
+0

在骰子艺术ASCII表示中添加了我的每个破折号之间的空格。 – Ozixic

+0

问题是他的字符串实际上不是'['ASCII0','ASCII1','ASCII2']'。他们是**多线**,他希望他们并排。否则,你会是对的 - 其他人也是如此。 –

+0

那么,当我看到这个问题时,他的问题中没有真正的dice_art表示......尽管他更新了他的输入是很好的。你的回答将是他想要的:) – yifan

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 | 
# |  ||  | 
# ------- ------- 

注:您需要保证每行在输出中的长度相同。如果连字符线比另一个短,那么您的对齐将会关闭。

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