美文网首页
扑克模拟

扑克模拟

作者: 豆约翰 | 来源:发表于2019-05-05 15:05 被阅读0次

    扑克模拟

    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
    for card in deck:
    print(card)
    for card in reversed(deck):
    print(card)
    print(Card('Q','hearts') in deck) #True
    print(Card('7','beasts') in deck) #False
    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]
    for card in sorted(deck, key=spades_high):# 通过上面定义的函数对这幅牌进行 升序排序
    print(card)

    相关文章

      网友评论

          本文标题:扑克模拟

          本文链接:https://www.haomeiwen.com/subject/uafhoqtx.html