Life is short, just use Python.

自从08年接触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<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)])

再python 里执行它,会输出一个字符拼出的心形。

字符图形还是很有趣的,有一个著名的图像叫mandelbrot。Mandelbrot图像中的每个位置都对应于公式N=x+y*i 中的一个复数,高中学过复数的都还应该有印象。每个位置用参数N来表示,它是x*x+y*y的平方根。如果这个值大于或等于2,则这个数字对应的位置值是0。如果参数N的值小于2,就把N的值改为N*N-

N(N=(x*x-y*y-x)+(2*x*y-y)*i)),并再次测试这个新N值。wiki百科给出的图像是这样的:

让我们用一行代码画一个Mandelbrot:

>>>print'\n'.join([''.join(['*'if abs((lambda a:lambda z,c,n:a(a,z,c,n))(lambda s,z,c,n:z if n==0else s(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2 else' 'for x in range(-80,20)])for y in range(-20,20)])

高效

对于随手小工具而言,更是Python的拿手好戏。

一行代码打印九九乘法表:

print '\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)])

输出:

一行代码计算出1-1000之间的素数

print(*(i for i in range(2, 1000) if all(tuple(i%j for j in range(2, int(i**.5))))))

一行代码可以输出前100项斐波那契数列的值:

print [x[0] for x in [(a[i][0], a.append((a[i][1], a[i][0]+a[i][1]))) for a in ([[1,1]] ) for i in xrange(100) ]]

一行代码实现阶乘,而且还带交互:

>>>reduce ( lambda x,y:x*y, range(1,input()+1))

10

3628800

一行代码实现摄氏度与华氏度之间的转换器:

>>>print((lambda i:i not in [1,2] and "Invalid input!" or i==1 and (lambda f:f<-459.67 and "Invalid input!" or f)(float(input("Please input a Celsius temperature:"))*1.8+32) or i==2 and (lambda c:c<-273.15 and "Invalid input!" or c)((float(input("Please input a Fahrenheit temperature:"))-32)/1.8))(int(input("1,Celsius to Fahrenheit\n2,Fahrenheit to Celsius\nPlease input 1 or 2\n"))))

1,Celsius to Fahrenheit

2,Fahrenheit to Celsius

Please input 1 or 2

1

Please input a Celsius temperature:28

82.4

>>>

至于字符串排序和快速排序更是手到擒来。

"".join((lambda x:(x.sort(),x)[1])(list(‘string’)))

qsort = lambda arr: len(arr) > 1 and qsort(filter(lambda x: x<=arr[0], arr[1:] )) + arr[0:1] + qsort(filter(lambda x: x>arr[0], arr[1:] )) or arr

内涵

看一看下面一行python代码,可能就要晕了:

这是原来为了激发孩子编程兴趣,让孩子练习的代码,它的真实面貌是大致这样的:

def guess_my_number(n):

while True:

user_input = raw_input("Enter a positive integer to guess: ")

if len(user_input)==0 or not user_input.isdigit():

print "Not a positive integer!"

else:

user_input = int(user_input)

if user_input > n:

print "Too big ! Try again!"

elif user_input < n:

print "Too small ! Try again!"

else:

print "You win!"

return True

guess_my_number(42)

实际上,只要理解了函数式编程,使用神奇的Lambda,配合列表推导以及复杂一点的判断语句,任何的python 代码都可以转换成一行代码的。

例如,取一个列表里的随机数

import random as rnd

print rnd.choice([2,3, 5,7, 11,13,17])

转换成Lambda 可以是:

print (lambda rnd: rnd.choice([1, 2, 3, 10]))(__import__('random'))

这些代码出了觉得好玩,主要是可以帮助我们了解某些Python的雕虫小记,尤其是神奇的Lambda 用法。

延展

当然,还有其他好玩的地方,输入下面这一行

import antigravity

它打开了浏览器,展示网站上的漫画和相关内容:

我们可以把python的文件打包,做成库的形式,然后import进来,是一种偷换概念和前提的一行代码。例如,为了与windows 传输文件,再Mac上临时搭个ftp:

$python -m pyftpdlib

这当然要依赖pyftpdlib 这个库了,机器上没有,pip install pyftpdlib 就可以了。

如果一行代码中允许分号存在,那就只是牺牲可读性而已了,那就基本上无所不能。

在连网的前提下,获取公网IP地址

python -c "import socket; sock=socket.create_connection(('ns1.dnspod.net',6666)); print sock.recv(16); sock.close()"

一行代码就可以轻易写个小游戏了,来模拟一下golf击球。

python -c "import math as m;a,v=eval(input());[print('%03d'%x+' '*m.floor(0.5+x*m.tan(a)-x*x/(v*m.cos(a)))+'o') for x in range(102)]"

输入角度和力量大小如(0.8,80),就能得到一条字符描画的抛物线了。

增加上while 等语句,画一个没完没了的python -c "while 1:import random;print(random.choice('╱╲'), end='')"。

最后,一行代码以python 的哲学结束吧。

$ python -c "import this"

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

一行python代码值多少钱_一行python代码相关推荐

  1. 学python能挣多少钱_学习Python能挣多少钱?什么人适合学习Python?

    学习Python能挣多少钱?什么人适合学习Python? 发布时间:2020-06-14 06:29:44 来源:51CTO 阅读:135 作者:老男孩IT 说起Python这门编程语言,发展前景好. ...

  2. python中间值怎么获得_使用python 3的中间值

    您应该在第一行(def)上加一个冒号(:).在def input(a, b, c) : if a <= b <= c or c <= b <= a : return b eli ...

  3. python代码库能干什么_一行Python代码能做什么?

    很典型的文章,基本可以展示Python代码到底有多黑魔法.虽然文中有些案例连我都觉得走火入魔,但真的很值得一看... 自从08年接触Python,就有爱不释手的感觉,逐渐地,有些不忍地疏远了Perl ...

  4. python一行代码是什么意思_一行Python代码能做什么?

    很典型的文章,基本可以展示Python代码到底有多黑魔法.虽然文中有些案例连我都觉得走火入魔,但真的很值得一看... 自从08年接触Python,就有爱不释手的感觉,逐渐地,有些不忍地疏远了Perl ...

  5. python 多维list 排序_一行代码的优雅| Python列表生成式

    欢迎回来,上一周我们整理了基础课中三大结构有关内容的具体应用及案例.可以通过以下几篇推文进行回溯: Python语言基础50课 我的Python - 100天笔记 |D1-D7 我的Python -  ...

  6. python能做什么效果_一行 Python 能实现什么丧心病狂的功能?

    发功之前友情提示:部分案例适用于Python3,在Windows下面可以用Python命令代替,具体请根据自己的修行选择. 一.江湖纯情版 1. 爱心 先来个高赞爱心的中英文结合版: print'\n ...

  7. Python基础(三)_函数和代码复用

    三:函数和代码复用 (一)函数的基本使用 1.函数的定义 函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用.函数也可以看作是一段具有名字的子程序,可以在需要的地方调用执 ...

  8. python字典值求平均值_如何用Python打印字典键值的平均值?

    我一直在尝试让python3打印我字典的平均值,sum/len.在 我一直在研究如何在字典中查找值的平均值的堆栈溢出方法,但是每次我试图使用字典中的值的键来做这件事时,我都会遇到很多错误.我能让透镜工 ...

  9. python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...

    参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...

最新文章

  1. 英国JIC院士组3.8万英镑招博后-植物代谢物与微生物组-截止6月27日
  2. Spring中的AOP在Advice方法中获取目标方法的参
  3. C++中 #include与#include
  4. 从信息瓶颈理论一瞥机器学习的“大一统理论”
  5. 二进制状态压缩相关操作
  6. mall-swarm是一套微服务商城系统
  7. restful api例子php,如何通过PHP访问RESTful API
  8. 在windows下编译ffmpeg
  9. 管理感悟:你是产品的第一个用户
  10. 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
  11. python数学篇(经典算法题)
  12. C#、ASP.NET 将PDF转换成Swf
  13. treetable怎么带参数_jquery treeTable插件使用细则
  14. Ubuntu安装配置sougou输入法
  15. Windows2008 R2配置FTP教程
  16. Installing vipm-17.0.2018-linux
  17. 保温杯内壁有很多小泡泡
  18. iOS14降级iOS13
  19. [SFML]使用SFML复刻一个九宫幻卡小游戏(二)项目创建和SFML的配置
  20. Vuforia下载详解

热门文章

  1. python模块版本管理工具_【转】Python包管理工具
  2. mysql 完全备份恢复吗_mysql完全备份与恢复
  3. 结构体中vector自动为0_面试题:你是如何选择顺序存储数据结构的?
  4. 怎么知道Win10的电脑是否满足Win11的硬件要求
  5. Edge浏览器网页怎么收藏 Edge浏览器网页收藏图文教程
  6. 轮播高度_Qt编写自定义控件24-图片轮播控件
  7. matlab用高斯消元法解线性方程组,用matlab利用高斯消元法求解线性方程组
  8. matlab安装无效距离过远,求助matlab的远程序
  9. 数字时钟html5 js,html5 canvas js(数字时钟)实例代码
  10. 计算机win7无法安装,新机装不了Win7?照这个方法5分钟搞定!