利用上一篇的框架,再写了个翻转棋的程序,为了调试minimax算法,花了两天的时间。几点改进说明:拆分成四个文件:board.py,player.py,ai.py,othello.py。使得整个结构更清晰,更通用,更易于维护。AI的水平跟minimax的递归深度,以及评价函数有关。基于此,我把minimax和评价函数都放到AI类里面AIPlayer使用了多重继承。继承了Player与AI两个类Game类中把原run函数里的生成两个玩家的部分提出来,写成一个
系统 2019-09-27 17:54:46 2242
三种方法:①直接使用dict②使用defaultdict③使用Counterps:`int()`函数默认返回0①dicttext="I'mahandsomeboy!"frequency={}forwordintext.split():ifwordnotinfrequency:frequency[word]=1else:frequency[word]+=1②defaultdictimportcollectionsfrequency=collections.d
系统 2019-09-27 17:54:44 2242
说明:python环境搭建一共包含两部分--python解释器安装、python编辑器安装python解释器安装参考链接:Python3环境搭建python编辑器安装--pycharm参考链接:PyCharm安装教程(Windows)pip安装与使用参考链接:Pythonpip安装与使用--包含pip使用的常见命令注:在安装package时,如果提示pip非最新版本,且使用命令pipinstall-Upip不奏效,使用如下命令:pipinstall--us
系统 2019-09-27 17:53:56 2242
函数:startswith()作用:判断字符串是否以指定字符或子字符串开头一、函数说明语法:string.startswith(str,beg=0,end=len(string))或string[beg:end].startswith(str)参数说明:string:被检测的字符串str:指定的字符或者子字符串。(可以使用元组,会逐一匹配)beg:设置字符串检测的起始位置(可选)end:设置字符串检测的结束位置(可选)如果存在参数beg和end,则在指定范
系统 2019-09-27 17:53:46 2242
由于电脑上安装了多个版本的pip,以及不同的pip对应不同的python,因此有时候使用pipinstall安装某个包时,可能会没有安装在想要的位置。具体而言,在我电脑上,运行pip--version时,输出如下pip9.0.1from/opt/anaconda3/lib/python3.6/site-packages(python3.6)运行sudopip--version时,输出如下pip18.0from/usr/local/lib/python3.5
系统 2019-09-27 17:53:40 2242
阅读本文大概需要3分钟关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下。趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写app,当时觉得非常好玩,那个是时候还是用symbian系统,熬了好几个通宵用j2me写了一个坦克大战,到现在还记得当程序运行的时候坦克互战的情景,真的是蛮兴奋的。好吧一下子扯远了,我们还是回到正题:我想来想去,决定要找一个好玩有趣的例子来总结,总于被我找到了,这个
系统 2019-09-27 17:53:24 2242
坐拥各大编程排行榜的Python,真的无敌了吗?在我一个朋友看来,他坚信Python可以做任何事情。但其实我是不服的,我相信很多人都有这种感觉。但是我最近当看GitHub年度项目数量时,我哭了,因为Python应用项目也太太太太多了吧!你们都是被Python迷惑了吗?说好一起同Java和C白头,你们却一个一个变了心?所以程序当我的朋友不断投入Python学习时,我决定做一些Python调研,因为就个人发展而言,选择学习的技术与要就读的大学可谓同等重要。如果
系统 2019-09-27 17:53:06 2242
程序中,经常用到这种,就是需要固定时间执行的,或者需要每隔一段时间执行的。这里经常用的就是Timer定时器。Thread类有一个Timer子类,该子类可用于控制指定函数在特定时间内执行一次。可以用几个例子来说明Timer的用法,一最简单的用法,Ns后(2s)后执行:1#python3example2fromthreadingimportTimer3importtime456defhello_test():7print("helloworld")89t=Ti
系统 2019-09-27 17:52:47 2242
学了下beautifulsoup后,做个个网络爬虫,爬取读者杂志并用reportlab制作成pdf..crawler.py复制代码代码如下:#!/usr/bin/envpython#coding=utf-8"""Author:AnemoneFilename:getmain.pyLastmodified:2015-02-1916:47E-mail:anemone@82flex.com"""importurllib2frombs4importBeautiful
系统 2019-09-27 17:51:35 2242
1.交换变量值2.将一列表中的所有元素拼接成字符串3.查找list中最高频率的值4.检查两个单词是否是字谜(组成的字母和对应数量一致)5.反转字符串6.反转列表7.转置2维数组8.链式比较9.链式函数调用10.复制列表11.DictionaryGet12.按值排序字典13.ForElse14.将列表转换为逗号分隔的字符串15.合并字典16.list中的最小和最大索引17.从列表中删除重复项查看英文原文:https://hackernoon.com/pyth
系统 2019-09-27 17:51:34 2242
前言Python中的sys模块极为基础而重要,它主要提供了一些给解释器使用(或由它维护)的变量,以及一些与解释器强交互的函数。本文将会频繁地使用该模块的getsizeof()方法,因此,我先简要介绍一下:该方法用于获取一个对象的字节大小(bytes)它只计算直接占用的内存,而不计算对象内所引用对象的内存这里有个直观的例子:importsysa=[1,2]b=[a,a]#即[[1,2],[1,2]]#a、b都只有两个元素,所以直接占用的大小相等sys.get
系统 2019-09-27 17:51:00 2242
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。如下实例:tup1=('physics','chemistry',1997,2000)tup2=(1,2,3,4,5)tup3="a","b","c","d"创建空元组tup1=()元组中只包含一个元素时,需要在元素后面添加逗号tup1=(50,)元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
系统 2019-09-27 17:49:55 2242
Vim插件是一个.vim的脚本文件,定义了函数、映射、语法规则和命令,可用于操作窗口、缓冲以及行。一般一个插件包含了命令定义和事件钩子。当使用Python编写vim插件时,函数外面是使用VimL编写,尽管VimL学起来很快,但Python更加灵活,例如可以用urllib/httplib/simplejson来访问某些Web服务,这也是为什么很多需要访问Web服务的插件都是使用VimL+Python编写的原因。在开始编写插件之前,你需要确认Vim支持Pyth
系统 2019-09-27 17:49:07 2242
先看下面这段代码:importosdefmain():foriinrange(0,2):os.fork()print'Hello'if__name__=='__main__':main()猜测一下,会输出几行Hello。答案是:HelloHelloHelloHelloHelloHello6行!为什么呢?首先,你要明白os.fork()创建的子进程会接着下一行代码继续执行,它有返回值,返回值可以为0表示子进程或者大于0表示父进程pid,os.getpid()
系统 2019-09-27 17:48:15 2242
计算:Ax-bA:2*2x:2*1b:2*1so,Ax-b:2*1if__name__=="__main__":A=np.array([[4.0,1.0],[1.0,3.0]])b=np.array([[1.0],[2.0]])x_0=np.array([[2.0],[1.0]])r_k=A*x_0-bprint(r_k)错误!!!修改:if__name__=="__main__":A=mat([[4.0,1.0],[1.0,3.0]])b=mat([[1
系统 2019-09-27 17:48:03 2242