博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python实现一个小游戏——抽牌
阅读量:5139 次
发布时间:2019-06-13

本文共 1615 字,大约阅读时间需要 5 分钟。

想要实现一个抽牌的功能,有很多种实现方法,这时候我们创造一个对象,通过内置方法来完成这个功能:

# Author:Zhang Zhao# -*-coding:utf-8-*-from collections import namedtupleCard = namedtuple('card',['rank','suit']) #创建一个元组,具有名字import jsonclass FranchDeck(object):    rank = [str(i) for i in range(2,11)] + list('JQKA') #代表牌的大小,字符串类型    suit = ['红心','方板','黑桃','梅花'] #代表牌的花色    def __init__(self):        self._cards = [Card(rank,suit) for rank in FranchDeck.rank                                           for suit in FranchDeck.suit] #创建一副牌,没有大小王    def __getitem__(self, item): #抽牌运用random中的chioce方法,需要的元素有字典还有长度        return self._cards[item]    def __len__(self):        return len(self._cards)    def __setitem__(self, key, value):#洗牌需要用到        self._cards[key] = value    def __str__(self):        return json.dumps(self._cards,ensure_ascii=False)#打印牌为列表,但__str__方法打印的是字符串格式,需要进行序列化a = FranchDeck()from random import choiceprint(choice(a))print(choice(a))print(a[4])print(a)from random import shuffleshuffle(a)print(a[4])

同时拓展一下,如果要实现一个人员信息统计,但是每年人员的姓名性别等信息不会变,变的只是年龄等信息,那么我们再录入信息的时候,为了防止系统里的对象重复或占用内存空间,我们就需要对信息进行自动录入刷新,这时候,我们就想到了set去重功能,但是,具体怎么实现呢?

# Author:Zhang Zhao# -*-coding:utf-8-*-class A(object):    def __init__(self,name,sex,age):        self.name = name        self.age = age        self.sex = sex    def __hash__(self):        return hash(self.name + self.sex)    def __eq__(self, other):        if self.name == other.name and self.sex == other.sex:            return True        return Falsea1 = A('Chen','女',18)a2 = A('Chen','女',28)print(set([a1,a2]))

可以看出,使用set的时候,它需要比较的参数是哈希值同时也需要__eq__的返回值。

转载于:https://www.cnblogs.com/zz1314/p/10451872.html

你可能感兴趣的文章
【bzoj4443】【[Scoi2015]小凸玩矩阵】二分+二分图最大匹配
查看>>
PHP设计模式系列 - 策略模式
查看>>
安装sqlserver2008
查看>>
ASP.NET 2.0 Provider Model 详细分析
查看>>
CDN技术详解及实现原理【转】
查看>>
关于工作单元模式——工作单元模式与EF结合的使用
查看>>
winForm添加图标
查看>>
用vs2013编译lua源码方法(一)
查看>>
AWS S3 上传文件
查看>>
JavaScript数据类型判断
查看>>
[JOI 2015 Final] 分蛋糕 2
查看>>
LeetCode "Smallest Rectangle Enclosing Black Pixels"
查看>>
Vim XDebug调试PHP php远程调试
查看>>
public private protected
查看>>
少年的烦恼
查看>>
使用定时器制作雪花动画
查看>>
英文邮件常用句型汇总2
查看>>
html+css:将有关系的域组成一组
查看>>
Spring学习笔记--注入Bean属性
查看>>
2019春第二次课程设计实验报告
查看>>