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)

python3模拟扑克牌的更多相关文章

  1. C# -- 模拟扑克牌发牌

    C# -- 模拟扑克牌发牌 1.  User 类: 玩家 public class User { private List<PaperCard> listCard = new List&l ...

  2. python3 模拟登录网站

    最近学习python,因经常登录公积金网站查看公积金缴存还款情况,so网上找了写脚本,修改了一下,方便获取网页中的数据. 使用谷歌浏览器F12查看登录请求内容 1.request header需要参数 ...

  3. python3 模拟鼠标和键盘操作

    1. 安装pyperclip pip install pyperclip 使用方法复制 pyperclip.copy("hello world") 粘贴 pyperclip.pas ...

  4. Python3 模拟登录知乎(requests)

    # -*- coding: utf-8 -*- """ 知乎登录分为两种登录 一是手机登录 API : https://www.zhihu.com/login/phone ...

  5. Python模拟登陆TAPD

    因为在wiki中未找到需要的数据,查询也很迷,打算用python登录tapd抓取所需项目下的wiki数据,方便查找. 2018-9-30 19:12:44 几步走 模拟登录tapd 抓取wiki页左侧 ...

  6. Python3高级基础(2)

    1 Python3模拟数据结构 1.1 栈 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表.栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进 ...

  7. python http请求及多线程应用

    目录 概述 tomorrow包准备 运行环境遇到的问题 其他尝试未果 概述 今天, 使用python3 模拟下发包, http get 请求, 然后 采用tomorrow 多线程. 代码如下: # c ...

  8. 第四小节之Java 集合类

    Java的集合类就像一个容器,专门用来存储Java类的对象.这些类可以存储任意类型的对象,并且长度可变,统称为集合,这些类位于java.util包中,数组也可以保存多个对象,但在某些情况下无法确定到底 ...

  9. python 处理protobuf协议

    背景:需要用django基于python3模拟一个http接口,请求是post方式,body是protobuf string,返回也是protobuf string 设计:django获取pb str ...

随机推荐

  1. 百度之星初赛A 今夕何夕

    今夕何夕 今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年 ...

  2. Linux下Oracle JDK替换Open JDK

    Oracle的产品需要Oracle JDK,但是Linux发行版附带的都是开源的Open JDK,这里给出的方法是在不删除原有Open JDK的情况下,安装Oracle JDK 环境 系统:CentO ...

  3. 云容器和安全性仍然是困扰IT人士的头号问题

    [TechTarget中国原创] 容器和云安全仍然是IT领域中最热门的两个话题.下面就让我们来详细探讨一下吧. 云容器风靡一时是事出有因的.如Docker这样的容器能够提高应用的可移植性,并让企业用户 ...

  4. leetcode 【 Best Time to Buy and Sell Stock III 】python 实现

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  5. 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)

    ffmpeg.exe是大名鼎鼎的视频处理软件,以命令行参数形式运行.网上也有很多关于ffmpeg的资料介绍.但是在用C#做实际开发时,却遇到了几个问题及注意事项,比如如何无损处理视频?如何在转换格式的 ...

  6. 利用js生成二维码

    $('#barcode').qrcode({ width: 300, height: 300, render: !!document.createElement('canvas').getContex ...

  7. CI在nginx环境下去掉url中的index.php

    在nginx环境下CI框架默认URL规则访问不了,出现500错误,如: http://blog.php230.com/index.php/keywords 今天在服务器配置CI框架环境时,去除URL中 ...

  8. mysql-Innodb事务隔离级别-repeatable read详解

    http://blog.csdn.net/dong976209075/article/details/8802778 经验总结: Python使用MySQLdb数据库后,如使用多线程,每个线程创建一个 ...

  9. Log4j官方文档翻译(八、文件输出)

    使用org.apache.log4j.FileAppender可以把日志写到文件中: FileAppender配置 immediateFlush 这个标志默认为true,是否每次有消息产生都自动flu ...

  10. 【bzoj2789】[Poi2012]Letters 树状数组求逆序对

    题目描述 给出两个长度相同且由大写英文字母组成的字符串A.B,保证A和B中每种字母出现的次数相同. 现在每次可以交换A中相邻两个字符,求最少需要交换多少次可以使得A变成B. 输入 第一行一个正整数n ...