2016年11月3日木曜日

開発環境

Think Python (Allen B. Downey (著)、 O'Reilly Media)のChapter 18.(Inheritance)のExercises 18-2.(No. 4220)を取り組んでみる。

Exercises 18-2.(No. 4220)

コード(Emacs)

test

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


class Card:
    suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spaces']
    rank_names = (
        [None, 'Ace'] + list(map(str, range(2, 11))) +
        ['Jack', 'Queen', 'King']
    )

    def __init__(self, suit=0, rank=2):
        self.suit = suit
        self.rank = rank

    def __str__(self):
        return '{0} of {1}'.format(Card.rank_names[self.rank],
                                   Card.suit_names[self.suit])


class Deck:

    def __init__(self):
        self.cards = []
        for suit in range(4):
            for rank in range(1, 14):
                card = Card(suit, rank)
                self.cards.append(card)

    def deal_hands(self, hands_num, cards_num):
        hands = []
        for i in range(hands_num):
            hand = Hand()
            for j in range(cards_num):
                card = Card()
                hand.add_card(card)
            hands.append(hand)
        return hands

    def add_card(self, card):
        self.cards.append(card)

    def __str__(self):
        res = []
        for card in self.cards:
            res.append(str(card))
        return '\n'.join(res)


class Hand(Deck):

    def __init__(self, label=''):
        self.cards = []
        self.label = label

if __name__ == '__main__':
    deck = Deck()
    hands = deck.deal_hands(2, 3)
    for i, hand in enumerate(hands):
        print(i)
        print(hand)

入出力結果(Terminal, IPython)

$ ./sample2.py
0
2 of Clubs
2 of Clubs
2 of Clubs
1
2 of Clubs
2 of Clubs
2 of Clubs
$

0 コメント:

コメントを投稿