当前位置: 首页 > 科技观察

一行Python代码

时间:2023-03-16 10:52:02 科技观察

人生苦短,就用Python吧。自从2008年接触到Python,就爱不释手。渐渐地,我不忍心疏远Perl和Shell编程,因为python的优雅?不是全部,主要是可以高效开发。高效,那一行代码能做什么?有趣的是,我孩子的英文名字是Andy。可能我教他写程序的时候,如果我先展示这行代码,说不定会引起他对代码的兴趣。print'\n'.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0else'')forxinrange(-30,30)])foryinrange(15,-15,-1)])在python中执行它将输出一个字符拼写的心。LoveAndy角色图形仍然很有趣,有一个著名的图像叫做mandelbrot。Mandelbrot图像中的每个位置都对应着公式N=x+y*i中的一个复数,高中学过复数的应该还有印象。每个位置由参数N表示,它是x*x+y*y的平方根。若该值大于等于2,则该数对应的位置值为0。若参数N的值小于2,则将N的值改为NN-N(N=(xx-yy-x)+(2xy-y)i)),再次测试这个新的N值。维基百科给出的图像是这样的:Mandelbrot让我们用一行代码画一个Mandelbrot:print'\n'.join([''.join(['*'ifabs((lambdaa:lambdaz,c,n:a(a,z,c,n))(lambdas,z,c,n:zifn==0elses(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2else''forxinrange(-80,20)])foryinrange(-20,20)])Efficient对于得心应手的小工具,它是Python的强项。一行代码打印九十九乘法表:print'\n'.join([''.join(['%s*%s=%-2s'%(y,x,x*y)foryinrange(1,x+1)])forxinrange(1,10)])输出:乘法表一行代码计算1-1000之间的素数print(*(iforiinrange(2,1000)ifall(tuple(i%jforjinrange(2,int(i**.5))))))一行代码可以输出前100个斐波那契数的值:print[x[0]forxin[(a[i][0],a.append((a[i][1],a[i][0]+a[i][1])))forain([[1,1]],)foriinxrange(100)]]一行代码实现阶乘,并且还有交互作用:reduce(lambdax,y:x*y,range(1,input()+1))103628800一行代码实现了摄氏度和华氏度的转换:print((lambdai:inotin[1,2]and"Invalidinput!"ori==1and(lambdaf:f<-459.67and"Invalidinput!"orf)(float(input("PleaseinputaCelsiustemperature:"))*1.8+32)ori==2and(lambdac:c<-273.15and"Invalidinput!"orc)((float(input("请输入("PleaseinputaFahrenheittemperature:"))-32)/1.8))(int(input("1,CelsiustoFahrenheit\n2,FahrenheittoCelsius\nPleaseinput1or2\n")))1,CelsiustoFahrenheit2,FahrenheittoCelsiust2882.4至于字符串排序和快速排序,很容易掌握。"".join((lambdax:(x.sort(),x)[1])(list('string')))qsort=lambdaarr:len(arr)>1andqsort(filter(lambdax:x<=arr[0],arr[1:]))+内涵看看下面这行python代码,你可能会头晕:这是书中的代码《跟孩子一起学编程》,为了激发孩子对编程的兴趣,让孩子练习代码——猜数字游戏的真实样子大致是这样的:defguess_my_number(n):whileTrue:user_input=raw_input("Enterpositiveintegertoguess:")iflen(user_input)==0ornotuser_input.isdigit():print"Notpositiveinteger!"else:user_input=int(user_input)ifuser_input>n:print"Toobig!Tryagain!"elifuser_input

猜你喜欢