纸牌游戏 (使用 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__只能返回字符串,否则报错
浙公网安备 33010602011771号