2016-04-16 59 views
0

我正在設置一個紙牌遊戲,我試圖找出一些方法可以打印列格式的每張卡片列表。關於如何使用以下列表完成此任務的任何想法?在Python中以列格式打印列表

[6♦] 
[2♣, 6♠, A♣, 7♣, J♣, XX] 
[4♥, 2♥, 4♠, 8♣, 5♦, XX, XX] 
[5♠, 3♦, A♠, 10♦, 3♠, XX, XX, XX] 
[7♥, 10♣, 10♥, 2♦, J♠, XX, XX, XX, XX] 
[8♦, 3♣, 7♦, 9♥, K♠, XX, XX, XX, XX, XX] 
[7♠, Q♠, 9♠, A♦, 3♥, XX, XX, XX, XX, XX, XX] 
+1

看看[這個問題](http://stackoverflow.com/ questions/4937491/matrix-transpose-in-python)並查看'itertools.zip_longest'。 – TigerhawkT3

+0

這會有幫助嗎? http://stackoverflow.com/questions/12292970/write-a-list-to-columns –

回答

3

承擔你在你的代碼,你想要做什麼什麼可猜測的一些,我會說,你應該從每個列表行上打印一個元素,然後移動到下一個列表。

# -*- coding: utf-8 -*- 
from itertools import izip_longest 

L1 = [u'6♦'] 
L2 = [u'2♣', u'6♠', u'A♣', u'7♣', u'J♣', u'XX'] 
L3 = [u'4♥', u'2♥', u'4♠', u'8♣', u'5♦', u'XX', u'XX'] 

for a,b,c in izip_longest(L1, L2, L3, fillvalue=' '): 
    print u'{0}\t{1}\t{2}'.format(a,b,c) 

幾乎沒有什麼變化,你應該得到你正在尋找的東西。但對於更嚴重的終端遊戲用戶界面,您應該考慮使用python curses

+1

請注意,我的答案是Python 2.7代碼,而Tadhg McDonald-Jensen的答案是Python3。選擇一個更適合你的環境。 – Cyb3rFly3r

2

正如其他人所提到的,itertools.zip_longest絕對是你在找什麼

from itertools import zip_longest 

stacks = [ 
      ['6♦'], 
      ['2♣', '6♠', 'A♣', '7♣', 'J♣', 'XX'], 
      ['4♥', '2♥', '4♠', '8♣', '5♦', 'XX', 'XX'], 
      ['5♠', '3♦', 'A♠', '10♦', '3♠', 'XX', 'XX', 'XX'], 
      ['7♥', '10♣', '10♥', '2♦', 'J♠', 'XX', 'XX', 'XX', 'XX'], 
      ['8♦', '3♣', '7♦', '9♥', 'K♠', 'XX', 'XX', 'XX', 'XX', 'XX'], 
      ['7♠', 'Q♠', '9♠', 'A♦', '3♥', 'XX', 'XX', 'XX', 'XX', 'XX', 'XX'] 
     ] 

for cards in zip_longest(*stacks,fillvalue=""): 
    print(" ".join("%3s"%c for c in cards)) 

結果輸出:

6♦ 2♣ 4♥ 5♠ 7♥ 8♦ 7♠ 
    6♠ 2♥ 3♦ 10♣ 3♣ Q♠ 
    A♣ 4♠ A♠ 10♥ 7♦ 9♠ 
    7♣ 8♣ 10♦ 2♦ 9♥ A♦ 
    J♣ 5♦ 3♠ J♠ K♠ 3♥ 
    XX XX XX XX XX XX 
     XX XX XX XX XX 
      XX XX XX XX 
       XX XX XX 
        XX XX 
         XX 
+0

這工作,非常感謝你!最後一件事:關於如何在可見卡片之前打印'XX'(翻轉卡片)的任何想法? –

+0

['reversed'](https://docs.python.org/3.5/library/functions.html#reversed)'(list(zip_longest(...)))' –

+0

這樣做會在前面留下大量的空白'XX'的任何實例。是否有辦法將每列對齊到'XX'的第一個實例,而不是第一個未翻動的卡? –