标签:rom elf 实例 values 对象 port int mon from
python3.6环境
import collections from random import choice Card=collections.namedtuple(‘Card‘,[‘rank‘,‘suit‘]) class FrenchDeck: ranks=[str(n) for n in range(2,11)] +list(‘JQKA‘) #扑克的大小范围 print(ranks) suits=‘spades diamods clubs hearts‘.split() # 黑桃,钻石,方块,红心 print(suits) def __init__(self): self._cards=[Card(rank,suit) for suit in self.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self, position): return self._cards[position] beer_card=Card(‘7‘,‘diamonds‘) #实例一个扑克点 print(beer_card) deck= FrenchDeck() #创一个扑克对象deck print(len(deck)) #打印总共有多少张扑克 print(deck[0]) #打印第一张牌 黑桃2 print(deck[-1]) #打印最后一张牌 红心A print(choice(deck)) #随机抽取一张牌 print(deck[:3]) #查看最上面三张 黑桃 2 ,3, 4 print(deck[12::13]) #抽取索引为12的那张牌,然后每隔13张在抽取一张 正好是4个A # 实现了 __getitem__方法,这一摞牌变成了可迭代对象 for card in deck: print(card) print(‘===============================下面是反响迭代===============================‘) #反向迭代 for card in reversed(deck): print(card) #判断某张牌实例是否存在这副牌中 print(Card(‘Q‘,‘hearts‘) in deck) #True print(Card(‘7‘,‘beasts‘) in deck) #False # 比较扑克牌的大小2 最小、A 最大;同时还要加 # 上对花色的判定,黑桃最大、红桃次之、方块再次、梅花最小。 # 下面就是按照这个规则来给扑克牌排序的函数,梅花 2 的大小是 0,黑桃 A 是 51: suit_values=dict(spades=3,hearts=2,diamods=1,clubs=0) def spades_high(card):
# 获取扑克的点数 rank_value = FrenchDeck.ranks.index(card.rank)
# 根据传入的牌的实例返回扑克0-51 之间的一个索引 例 黑桃A:12*4+3=51 return rank_value * len(suit_values) + suit_values[card.suit] # 通过上面定义的函数对这幅牌进行 升序排序 print(‘===============================自定义排序===============================‘) for card in sorted(deck, key=spades_high): print(card)
标签:rom elf 实例 values 对象 port int mon from
原文地址:https://www.cnblogs.com/benjamin77/p/9107507.html