2017-04-22 79 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 | 
# |  ||  | 
# ------- ------- 

注:您需要保證每行在輸出中的長度相同。如果連字符線比另一個短,那麼您的對齊將會關閉。

未來,如果您提供預期的輸出,您可以獲得更好的響應。