随笔分类 - 有趣的Python
摘要:doctest模块搜索类似于交互式Python会话的文本段,然后执行这些会话来验证他们是否如所示的那样。有一些常见使用doctest的方式: 通过检测所有的文档中的交互式例子输出正常来检查一个模块的文档字符串为最新的。 通过验证来自测试文件或者测试对象的交互式例子的输出像预期一样来执行回归测试。 为一个包编写教程文档,逐字地用输入-输出例子来说明。取决与这个例子或者说明文本是否强调,有些“逐字测试”或者“可执行文档”的味道。 以下是一个来自官方文档中的例子:View Code """Thisisthe"example"m...
阅读全文
摘要:计算机模拟常常需要用到随机选择的数。本文从随机数的一个简单应用开始简要地介绍Python的random模块。使用蒙特卡洛方法计算pi值Links:该问题来自于pudure university(普渡大学)python课程中的problem set2Monte Carlo methods are used to simulate complex physical and mathematical systems by repeated random sampling. In simple terms, given a probability, p, that an event will occu
阅读全文
摘要:What’s New in Python 2.7 Author:A.M. Kuchling (amk at amk.ca)Release:2.7.2Date:August 25, 2011This article explains the new features in Python 2.7. Python 2.7 was released on July 3, 2010.本文解释了Python2.7中的新特性。该版本于2010年7月3日发布。Numeric handling has been improved in many ways, for both floating-point n..
阅读全文
摘要:偶然看到一道趣味题,将一个正整数倒置过来,例如,将1234变成4321。如果采用C的话,使用do..while语句来做,只要temp不为0,每执行一次,rebmun用来存原整数的最右边的数字并乘以10。代码如下:#include<stdio.h>voidmain(){intnumber=0;intrebmun=0;inttemp=0;printf("\nEnteranumber:");scanf("%d",&number);temp=number;do{rebmun=10*rebmun+temp%10;temp=temp/10;}wh
阅读全文
摘要:这个问题是这个样子滴:有一个无序、元素个数为n(n为偶数)的正整数数组arr,要求:如何能把这个数组分割为元素个数为n/2的两个子数组,并使两个子数组的的和最接近。问题来源: http://hi.baidu.com/hell74111/blog/item/b6155d94f46717067bf48024.html我的思路是:(1)把数组拆成2个子数组A和B(2)用A中的每个元素与B中的每个元素比较,数组值之和的绝对值小于原来的值就交换其实并不难,关键在于我突然犯2了...我写了个测试数组a=[1,2,3,4,5,6].然后想当然地以为分成的两个数组各元素之和应该相等的。结果在那苦苦耗了半天,想
阅读全文
摘要:给出任意一个十进制整数n,计算它的b进制展开式from __future__ import divisionimport mathdef baseb(b,q): aList=[] while q!=0: a=int(math.fmod(q,b)) q=math.floor(q/b) aList.append(str(a)) expansion=''.join(aList) print expansion运行结果如下>>> baseb(2,100)0010011
阅读全文
摘要:一道中学生的题目困扰了我好久啊,从吃晚饭时间到现在...求x的n次方的末两位数。令y=x**n,则y的末两位数与x的末两位数有关。规律就是从2开始,每20个数是一个循环View Code for x in range(2, 100): #x为底数 y=x%100 #y为幂的最后两位 s="" for n in range(2,201): #n为指数 init=y #init保留上一次y的值 y=y*x #每次乘以一个x y = y % 100 #对y用100取模,值为最后两位数 if y==init: # 如果本次算值与上次计算值相同,则不需继续计算 break if y=
阅读全文
摘要:这是一道从别人博客里看到的趣味题:[题目]1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?我想当然地以为是20—>10—>5—>2—>1,漏了一瓶...还是写个程序来解决一下:设每次买一瓶,攒够2个空瓶就换一瓶汽水:def qishui1( m ): s = 0 # 喝去的汽水瓶数 k = 0 #空瓶数 while m>0: m=m-1 #买 1瓶 s=s+1 k=k+1 while k==2: k=0 s=s+1 #换一瓶汽水,喝掉 k=k+1 #又多出来一个空瓶 return s,km = 20s,k=qishui1(m)pr
阅读全文
摘要:最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动。有关文件夹与文件的查找,删除等功能 在os模块中实现。使用时需先导入这个模块,导入的方法是:import os一、取得当前目录s =os.getcwd()# s 中保存的是当前目录(即文件夹)比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置。举个简单例子,我们将abc.py放入A文件夹。并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A文件夹内生成一个新文件夹。且文件夹的名字根据时间自动生成。import osimport timefolder = tim
阅读全文
摘要:Pyxml是一个早在04年停止维护的项目了,只支持到2.4,我从官网上down下0.8.4版本setup.py build,结果error: Unable to find vcvarsall.bat。网上找解决办法还得下个mingw,否则就得VS2005以上的版本,这样机子上只有VC6.0的我情何以堪那。 于是上网搜解决办法: 这位老大告诉我:PyXML is dead project – warning: PyXML does not work with Python2.6 http://georgik.sinusgear.com/2011/01/10/dead-project-warnin
阅读全文
摘要:原生的matplotlib并不支持直接使用中文,而需要修改一下相应的文件,上网搜了下,找到一个最简洁的办法。 NO.1 找到matplotlibrc文件 C:\Python26\Lib\site-packages\matplotlib\mpl-data\matplotlibrc(Windows) /usr/share/matplotlib/mpl-data/matplotlibrc (Linux) NO.2 找到以下两项,去掉# font.family : sans-serif font.sans-serif : Microsoft YaHei , Bitstream Vera San...
阅读全文
摘要:一般在Python下的编译软件用的是py2exe,可能对初学者来说,命令行的方式不如图形界面来的直观,幸运的是老外写了一个集成了多个py编译软件的图形界面,操作相当方便。 这里我简单写了下使用过的方法: 1.双击GUI2Exe.py打开软件 2.右键点击My Projects选择New Projects,选择py2exe(默认) 3.Exe Kind根据程序选择,命令行选择console,选择Python Main Script所在目录 4.点击Compile等待编译完成 来看看Hello文件夹里有什么了 运行一下试试,成功! 里面还有其他的编译软件,还可以...
阅读全文
摘要:这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。 Python 默认支持的是ASCII字符,包含了英文字母大小写以及标点符号,用一枚字节表示。中文则使用两枚字节表示。 没兴趣的同学可以绕过这段… 有人可能要问了,我擦,为神马以前说一个汉字的精度越高字节越多么?为神马是两枚字节? 这是两个不同的概念。存储里讲的是一个汉字占两个字节。 而你说的点阵那个是打印码。 平时说1个汉字占2个字节,是指汉字编码,就象每个字符都有一个ASCII码一样。1个ASCII码占1个字节,而1个汉字编码占2个字节。 简
阅读全文
摘要:VPython简单例子 首先打开“VIDLE for VPython” VPython的例子在E:\Python27\Lib\site-packages\visual\examples(视安装软件的路径不同而不同) e.g.1 (知识点:向量、三维坐标) bounce.py from visual import * #引入可视化包中的类 floor = box(length=4, height=0...
阅读全文
摘要:Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作。1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。file_object=open('thefile.txt')try: all_the_text=file_object.read( )finally: file_object.close( )注:不能把open语句放在try块里,因为当打开文件出现异常时,文件
阅读全文
摘要:1.利用Python中自带的help()查询,例如:2.利用Python自带的Pythonv2.6.2documentation,在PythonShell下选择help,选择PythonDocs3.去官网查询所需资料http://www.python.org/doc/4.Python(x,y)中配备了丰富齐全的帮助文档,你可以在document中找到它们。
阅读全文
摘要:给出a = [3, 3, 5, 7, 7, 5, 4, 2]使用a = list(set(a))a=[2, 3, 4, 5, 7]不光删除了重复元素,还进行了排序再来看看字符串吧,同样删除了重复元素,并进行了排序>>> a = set('abracadabra')>>> b = set('alacazam')>>> a # unique letters in aset(['a', 'r', 'b', 'c', 'd'])>&
阅读全文
摘要:今天看了下数据结构,想用Python实现冒泡排序,快速排序,插入排序,堆排序。然后突然一想Python的列表有自带的sort()方法啊,比较一下哪个算法更优。 随机生成包含10000个范围(0,65536)的随机数(int),然后我就被打击了... 其中快排写了两种,冒泡也写了两种。 总结: (1)能用for循环的时候,就不要用while循环。请看两种冒泡的执行时间。(2)有时候我们需要在代码简洁和程序效率之间做成平衡。请看两种快排的执行时间。(3)Python自带的sorted()函数和列表的sort()方法已经很强大了,咱没必要这么蛋疼...
阅读全文
摘要:这两个基本上都是在循环的时候用。foriinrange(0,100):printiforiinxrange(0,100):printi这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:a=range(0,100)printtype(a)printaprinta[0],a[1]而xrange则不会直接生成一个list,而是每次调用返回其中的一个值a=xrange(0,100)printtype(a)printaprinta[0],a[1]所以xrange做循环的性能比range好,尤其是返回很大的时候!尽量用xrange吧,除非你是要返回一个列表。看看这里:PS
阅读全文
摘要:注释:本文原来转自博客大巴的一篇文章,向原作者致谢!我也做了相应的修改,更加完善对于Pythonx,y的介绍Python 二三事 面向初学者介绍Python相关的一些工具,以及可能遇到的常见问题。更新1st 2011.1.15更新2nd 2012.3.4引言在这里我假设你已经看完了一篇Python教程,基本熟悉了Python的结构和语法,在命令行下的Python互动环境中尝试过大部分Python的语句,觉得Python是个不错的语言准备继续下去。那么本篇文章会就Python实际运用中相关工具的选择,包括IDE,调试套件,第三方库管理工具这些进行介绍。另外还会对某些中文环境下容易遇到的问题,例.
阅读全文