zoukankan      html  css  js  c++  java
  • python3模拟扑克牌

    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)
  • 相关阅读:
    CodeForces
    CodeForces
    springboot 入门七-静态资源处理
    springboot 入门六-多环境日志配置
    springboot 入门五-日志一
    springboot 入门四-时间类型处理
    springboot 入门三- 读取配置信息二(读取属性文件方式)
    springboot 入门二- 读取配置信息一
    springboot 入门一 hello world!
    SVN提交小结(转)
  • 原文地址:https://www.cnblogs.com/benjamin77/p/9107507.html
Copyright © 2011-2022 走看看