利用上一篇的框架,再写了个翻转棋的程序,为了调试minimax算法,花了两天的时间。几点改进说明:拆分成四个文件:board.py,player.py,ai.py,othello.py。使得整个结构更清晰,更通用,更易于维护。AI的水平跟minimax的递归深度,以及评价函数有关。基于此,我把minimax和评价函数都放到AI类里面AIPlayer使用了多重继承。继承了Player与AI两个类Game类中把原run函数里的生成两个玩家的部分提出来,写成一个
系统 2019-09-27 17:54:46 2076
如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来存放一系列的数据,事实真是如此吗?a=[1,3,5,7,'a']b=(1,3,5,7,'b')#现在改变b中的值b[2]=4TypeErrorTraceback(mostrecentcalllast)in()45#现在改变b中数据的值---->6b[2]=
系统 2019-09-27 17:52:59 2076
这是一个简易的员工管理系统,实现最简单的功能:1.登录用户密码验证(错误三次自动退出)2.支持文本员工的搜索、添加、删除、修改3.一级层级多个选项、二级层级多个选项,都支持判空、退出、返回上一层级4.针对删除和修改有员工当前自动搜索到的结果进行参照修改和特殊提醒是否删除用到的基础知识点比较多:1.计数器2.whileTrue以及给while做退出层级标记3.if…elif…else的嵌套使用4.continue和break以及简单函数定义def5.键盘抓取
系统 2019-09-27 17:52:38 2076
我在面试前,面试公司发来一道python题,我觉得还挺有意思的。题目如下。"""“”"我们知道2进制数字由2种字符(01)组成,10进制数字由10种字符(0123456789)组成,16进制由16种字符(0123456789ABCDEF)。不同进制的数字之间可以相互转换。我们定义一种“十二地支进制”数字,这种数字由中国古代地支的12种字符(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)组成。“十二地支进制”数字和10进制数字的关系可以看下面的代码。[["
系统 2019-09-27 17:52:33 2076
工厂模式,类似实际的制造车间中,根据订单的需求来生成/创建某个实例。1.应用场景:需要创建的实例不确定,由输入的数据决定;2.实现方法:实现一个独立的类,接收传入的需要创建实例的名称,在该类中实现创建某个具体实例。3.代码:#coding:utf-8classPerson(object):def__init__(self):self.name=Noneself.gender=NonedefgetName(self):returnself.namedefge
系统 2019-09-27 17:52:31 2076
Python还有“敌人”吗?最近网络上一则帖子吸引了笔者,大意内容为:据说A是有2年多经验的Python工程师,面一个公司相关的岗位,由于人手紧缺,所以只问了一个框架,就按笔者提的35K办理了入职。(35K为A的砍价策略)关于这则帖子背后的动机或者真实性,我们不再去追究。不过这从侧面反映出了Python的火热,也说明了Python的壮大带给其他语言的焦虑和压力。所以,当我们聊Python时,我们究竟该聊些什么?这四个Python项目,让你瞬间读懂Pytho
系统 2019-09-27 17:51:05 2076
Python的MRO即MethodResolutionOrder(方法解析顺序),也就是在Python中的类的继承顺序是怎样的。在Python2.3之前,MRO的实现是基于DFS的,而在Python2.3以后MRO的实现是基于C3算法(我这里两种算法的具体实现都不详述)。C3算法最早被提出是用于Lisp的,应用在Python中是为了解决原来基于深度优先搜索算法不满足本地优先级,和单调性的问题。本地优先级:指声明时父类的顺序,比如C(A,B),如果访问C类对
系统 2019-09-27 17:50:47 2076
wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样;通过探寻产生这种结果的内部原因,可以让我们对Python里的一些细节有更广泛的认知。1.字典键的隐式转换some_dict={}some_dict[5.5]="Ruby"some_dict[5.0]="JavaScript"some_dict[5]="Python"输出如下:>>>some_dict{5.0:"Python",
系统 2019-09-27 17:50:47 2076
压缩数据创建gzip文件先看一个略麻烦的做法importStringIO,gzipcontent='Lifeisshort.Iusepython'zbuf=StringIO.StringIO()zfile=gzip.GzipFile(mode='wb',compresslevel=9,fileobj=zbuf)zfile.write(content)zfile.close()但其实有个快捷的封装,不用用到StringIO模块f=gzip.open('fil
系统 2019-09-27 17:50:34 2076
起步在Python中,提供了很多种字符串格式化的方式,分别是%-formatting、str.format和f-string。本文将比较这几种格式化方法。%-格式化这种格式化方式来自于C语言风格的sprintf形式:name="weapon""Hello,%s."%nameC语言的给实话风格深入人心,通过%进行占位。为什么%-formatting不好不好的地方在于,如果字符串较长或较多的参数,那么可读性就变得很差。str.format格式化PEP-3101
系统 2019-09-27 17:50:28 2076