纸牌游戏 (使用 nametuple)

import json
from collections import namedtuple
from random import choice
from random import shuffle

Card = namedtuple('Card',['rank','suit']) 

class FranchDeck:
    ranks = [str(n) for n in range(2,11)] + list('JQKA')
    suits = ['红心','方板','梅花','黑桃']

    def __init__(self):
        self._cards = [Card(rank,suit) for rank in FranchDeck.ranks
                                        for suit in FranchDeck.suits]

    def __len__(self):
        return len(self._cards)

    def __getitem__(self, item):
        return self._cards[item]

    def __setitem__(self, key, value):
        self._cards[key] = value

    def __str__(self):
        return json.dumps(self._cards,ensure_ascii=False)

deck = FranchDeck()
print(deck[0])
print(choice(deck)) print(choice(deck)) shuffle(deck) print(deck[:5])

 

 

1.使用可命名元祖, 初始化时创建Card对象组成列表

2.choice 依赖 len方法  (随机抽取依赖列表长度)

3.shuffle 依赖__setitem__方法     (打乱顺序时需要重新赋值)

4.__str__只能返回字符串,否则报错

posted on 2018-12-08 17:46  a米ya  阅读(76)  评论(0)    收藏  举报

导航