• day30 纸牌游戏


     1 import json
     2 from collections import namedtuple
     3 
     4 Card = namedtuple('Card', ['rank', 'suit'])  # rank 牌面的大小 suit牌面的花色
     5 
     6 
     7 class FranchDeck:
     8     ranks = [str(n) for n in range(2, 11)] + list('JQKA')  # 2-A
     9     suits = ['红心', '方板', '梅花', '黑桃']
    10     
    11     def __init__(self):
    12         self._cards = [Card(rank, suit) for rank in FranchDeck.ranks
    13                        for suit in FranchDeck.suits]
    14     
    15     def __len__(self):
    16         return len(self._cards)
    17     
    18     def __getitem__(self, item):
    19         return self._cards[item]
    20     
    21     def __setitem__(self, key, value):
    22         self._cards[key] = value
    23     
    24     def __str__(self):
    25         return json.dumps(self._cards, ensure_ascii=False)
    26 
    27 
    28 deck = FranchDeck()
    29 print(deck)
    30 # [["2", "红心"], ["2", "方板"], ["2", "梅花"], ["2", "黑桃"], ["3", "红心"],
    31 # ["3", "方板"], ["3", "梅花"], ["3", "黑桃"], ["4", "红心"], ["4", "方板"],
    32 # ["4", "梅花"], ["4", "黑桃"], ["5", "红心"], ["5", "方板"], ["5", "梅花"],
    33 # ["5", "黑桃"], ["6", "红心"], ["6", "方板"], ["6", "梅花"], ["6", "黑桃"],
    34 # ["7", "红心"], ["7", "方板"], ["7", "梅花"], ["7", "黑桃"], ["8", "红心"],
    35 # ["8", "方板"], ["8", "梅花"], ["8", "黑桃"], ["9", "红心"], ["9", "方板"],
    36 # ["9", "梅花"], ["9", "黑桃"], ["10", "红心"], ["10", "方板"], ["10", "梅花"],
    37 # ["10", "黑桃"], ["J", "红心"], ["J", "方板"], ["J", "梅花"], ["J", "黑桃"],
    38 # ["Q", "红心"], ["Q", "方板"], ["Q", "梅花"], ["Q", "黑桃"], ["K", "红心"],
    39 # ["K", "方板"], ["K", "梅花"], ["K", "黑桃"], ["A", "红心"], ["A", "方板"],
    40 # ["A", "梅花"], ["A", "黑桃"]]
    41 
    42 print(deck[10]) # 索引为10 的 Card(rank='4', suit='梅花')
    43 from random import choice  # choice 依赖于len
    44 print(choice(deck))
    45 print(choice(deck))
    46 
    47 from random import shuffle  # 洗牌,shuffle依赖于setitem
    48 shuffle(deck)
    49 print(deck[10])    
  • 相关阅读:
    为什么 Linux Mint 比 Ubuntu好?
    未将对象引用设置到对象的实例--可能出现的问题总结
    Java的位运算符具体解释实例——与(&)、非(~)、或(|)、异或(^)
    openldap---ldapsearch使用
    HDU1342 Lotto 【深搜】
    XMPP协议的原理介绍
    百度究竟是哪国的公司
    DWZ使用笔记
    利用Excel批量高速发送电子邮件
    文法分析
  • 原文地址:https://www.cnblogs.com/shijieli/p/9939347.html
Copyright © 2020-2023  润新知