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('','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('','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)

最新文章

  1. Spring中文文档-第一部分
  2. .net在当前日期的基础上加一天
  3. SQL server while语句、存储过程
  4. SQLServer2008R2 mdf文件还原数据库
  5. CSS3 功能
  6. Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
  7. POJ1321棋盘问题
  8. JS中的replace方法
  9. 【MySQL案件】mysql登录-S失败
  10. 201521123086 《Java程序设计》第9周学习总结
  11. unity中.meta提交错误操作导致空脚本
  12. iOS 开发 右滑返回上一级控制器
  13. 【Sql】mySQL在windows环境启动
  14. Asp.net mvc 5 razor
  15. linux:如何指定进程运行的CPU
  16. [Day21]异常
  17. C# Vs2017启动调试,debug或者release调试状态闪一下程序就独立运行了
  18. Spring initializr使用
  19. 错误类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数
  20. Scala 类型界定

热门文章

  1. 10.VUE学习之使用lodash库减少watch对后台请求的压力
  2. static关键字 详解
  3. 100个经典C语言程序(益智类)
  4. Cube HDU - 1220(思维)
  5. nova hypervisor接口添加host_ip字段
  6. Kubernetes配置Ceph RBD StorageClass
  7. 笔记-python-装饰器
  8. CyclicBarrier源码分析
  9. Migrate a Domain-based Namespace to Windows Server 2008 Mode
  10. Python对文本文件的简单操作(一)