1

dictのdictを動的に作成してから、ターミナルのすっきりとしたテーブルに出力する必要があります。最終的には、各dictに追加して、テーブルを再印刷します。

これまでの私のコードは次のとおりです。

def handy(self, play_deck):
    a = raw_input('How many hands? ')
    for i in range(int(a)):
        h = "hand" + str(i+ 1) # dynamilly create key
        q, play_deck = self.deal(self.full_deck) # pull cards from deck
        self.dict_of_hands.setdefault(h, q) # load up dict of hands

    hand_keys = self.dict_of_hands.keys()
    the_hands = self.dict_of_hands
    print "\n"
    for hand in hand_keys:
        for card in range(len(the_hands[hand].keys())):
            print hand
            print the_hands[hand][card]

そして私の出力はこれです:

How many hands? 4

hand4
6 of Clubs
hand4
4 of Diamonds
hand1
8 of Diamonds
hand1
10 of Hearts
hand2
10 of Hearts
hand2
5 of Clubs
hand3
9 of Diamonds
hand3
3 of Hearts

欲しいのは:

hand1           hand2           hand3            hand4
2 of hearts     8 of spades     ace of clubs     jack of diomonds
5 of diamonds   ...             ...              ...etc.

SOで見た例は、既知の数の列に基づいています。これは動的である必要があります。

4

3 に答える 3

1

わかった。@ecatmur が提供したものを使用すると、次のようになりました。これは今のところ機能しているようです。

def handy(self, play_deck):
    a = raw_input('How many hands? ')
    for i in range(int(a)):
        h = "hand" + str(i+ 1) # dynamilly create key
        q, play_deck = self.deal(self.full_deck) # pull cards from deck
        self.dict_of_hands.setdefault(h, q) # load up dict of hands

    hand_keys = self.dict_of_hands.keys()
    the_hands = self.dict_of_hands

    first_cards = []
    second_cards = []
    for hand in the_hands:
        # print the_hands[hand][0]
        first_cards.append(the_hands[hand][0])

    for hand in the_hands:
        # print the_hands[hand][1]
        second_cards.append(the_hands[hand][1])         

    header = self.dict_of_hands.keys()


    table = texttable.Texttable()
    table.header(header)
    table.add_rows([first_cards, second_cards], header=False)
    print table.draw()

出力は次のとおりです。

How many hands? 4
+---------------+---------------+------------------+---------------+
|     hand4     |     hand1     |      hand2       |     hand3     |
+===============+===============+==================+===============+
| Jack of Clubs | 9 of Diamonds | Jack of Diamonds | 4 of Spades   |
+---------------+---------------+------------------+---------------+
| 6 of Diamonds | 10 of Spades  | 9 of Diamonds    | Ace of Hearts |
+---------------+---------------+------------------+---------------+

パズルの最後のピースは、次の行を動的にすることです。

table.add_rows([first_cards, second_cards], header=False)

最終的には、それぞれの手の長さを変える必要があります。

于 2012-08-22T21:09:14.830 に答える
1

行のリストに変換するには、次を使用しますzip

header = dict_of_hands.keys()
rows = zip(*dict_of_hands.items())

import texttable
table = texttable.Texttable()
table.header(header)
table.add_rows(rows, header=False)
print table.draw()
于 2012-08-22T20:28:57.583 に答える
0

このレシピを見てください:テキスト インターフェイス用のテーブルをレンダリングする

于 2012-08-22T20:18:02.607 に答える