首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一行 Python 代码能实现什么奇葩功能?

设为 “星标”,每天带你逛 GitHub!

如果只允许你写一行代码,你能够实现什么样的功能?今天我们来看看这 16 行丧 (gan) 心 (de) 病 (piao) 狂 (liang)代码。

输出 Mandelbrot 图像

mandelbrot 图像中文名叫曼德勃罗图像。Mandelbrot 图像中的每个位置都对应于公式 N=x+y*i 中的一个复数。其实数部分是 x,虚数部分是 y,i 是 -1 的平方根。图像中各个位置的 x 和 y 坐标对应于虚数的 x 和 y 部分。百度百科给出的图形是这样的。

看不懂?没关系,我们直接来看效果。(左右滑动查看所有代码)

print('\n'.join([''.join(['*'ifabs((lambdaa:lambdaz, c, n: a(a, z, c, n))(lambdas, z, c, n: zifn ==elses(s, z*z+c, c, n-1))(,0.02*x+0.05j*y,40))

九九乘法表

还记得我们熟记于心的九九乘法表吗?来,我们来巩固下,我们用一行代码打印出来。(左右滑动查看所有代码)

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

一行打印心型图案

不会表白?一行代码告诉你!

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

美丽的螺旋

你觉得上面的心型图案不够浪漫?那么试试下面这个美丽的螺旋?在 Python 编译器中输入下面的代码。(左右滑动查看所有代码)

exec("""\nfrom turtle import *\nfor i in range(500): \n forward(i)\n left(91)\n""")

看下执行过程中的部分动态图。

再截图一张大图看下,是不是很漂亮、很炫酷!

这个画图库用的是 turtle 库。

计算出 1-100 之间的素数

素数又称质数。一个大于 1 的自然数,除了 1 和它自身外,不能整除其他自然数的数叫做素数;

print(' '.join([str(item)foriteminfilter(lambdax:not[x % iforiinrange(2, x)ifx % i ==], range(2,101))]))

结果是:

一行代码输出斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多・斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为『兔子数列』,这个数列从第 3 项开始,每一项都等于前两项之和。

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

看下执行结果:

一行代码实现快排算法

快速排序是一种经典而高效的排序算法。

quickSort = lambdaarray:arrayiflen(array) array[]])

array= [9,11,88,32,8]

print(quickSort(array))

打印 Python 之禅

你们知道 Python 之禅么?知道『人生苦短,我用 Python』这句经典的出处么?用下面一行代码就可以打印 Python 之禅。(左右滑动查看所有代码)

>>> import this

The ZenofPython,byTim Peters

Beautifulisbetter than ugly.

Explicitisbetter than implicit.

Simpleisbetter than complex.

Complexisbetter than complicated.

Flatisbetter than nested.

Sparseisbetter 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.

Inthe faceofambiguity, refuse the temptationtoguess.

There should be one--andpreferably only one --obvious waytodoit.

Although that way maynotbe obvious at first unless you're Dutch.

Nowisbetter than never.

Although neverisoften better than *right* now.

Ifthe implementationishardtoexplain, it's a bad idea.

Ifthe implementationiseasytoexplain, it may be a good idea.

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

给大家一个参考的翻译:

优美胜于丑陋。

显式胜于隐式。

简单胜于复杂。

复杂胜于难懂。

扁平胜于嵌套。

稀疏胜于紧密。

可读性应当被重视。

尽管实用性会打败纯粹性,特例也不能凌驾于规则之上。

不要忽略任何错误,除非你确认要这么做

面对不明确的定义,拒绝猜测的诱惑。

找到一种最好唯一的一种方法去解决问题。

虽然一开始这种方法并不是显而易见,因为你不是 Python 之父。

做好过不做,但没有思考的做还不如不做

如果实现很难说明,那它是个坏想法。

如果实现容易解释,那它有可能是个好想法。

命名空间是个绝妙的想法,请多加利用。

看漫画

导入一个包就能看漫画,执行代码后系统会自动打开漫画的页面。

importantigravity

给大家一个参考的翻译:

上图:

“你在飞!怎么做到的?”

“Python!”

下左:

“我昨晚学习了 Python,一切都是那么简单”

“运行 HELLO WORLD 只需要 print “Hello World!””

下中:

“我还是不明白…… 动态类型,还是空格?”

“来加入我们吧,编程又再次变得有趣起来了,Python 是一个全新的世界”

“但你是怎么飞起来的?”

下右:

“我只是输入了 import antigravity”

“就这样?”

“我还对药品柜中的所有东西进行了采样比较”(暗指他对比过多种编程语言,但还是觉得 Python 最简单)

“但我想这就是 Python.”

单线迷宫

cmd 命令下输入下列代码实现单线迷宫。

python-c"while 1:import random;print(random.choice('|| __'), end='')"

一行代码开启 web 服务

使用此命令,建立一个内网可以快速访问的 WEB 服务。

python-mhttp.server8080

输入 http://localhost:8080/ 网站就可以访问的 WEB 服务了。

迷你老虎机

用随机的 unicode 字符打样出来,完美模拟了老虎机的效果,按回车键停止。请看下面动态图。

python -c "import random;p=lambda:random.choice('7◄');[print('|'.join([p(),p(),p()]),end='\r')foriinrange(8**5)]”

一行代码解决八皇后问题

什么是八皇后问题?我们看下百度百科的解释:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯・贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有 96 种方案。1854 年在柏林的象棋杂志上不同的作者发表了 40 种不同的解,后来有人用图论的方法解出 92 种结果。计算机发明后,有多种计算机语言可以解决此问题。

用下列代码可以列出所有结果,共 92 种。

[__import__('sys').stdout.write('\n'.join('.'* i +'Q'+'.'* (8-i-1)foriinvec) +"\n========\n")forvecin__import__('itertools').permutations(range(8))if8==len(set(vec[i]+iforiinrange(8))) ==len(set(vec[i]-iforiinrange(8)))]

将多维数组转化为一维

一行代码将多维数组转化为一维数组。

print([iforiteminabforiinitem])

给出一个多维数值 ab,通过这个方法变成一维数组。

ab =[[1, 2, 3], [5, 8], [7, 8, 9]]

print([iforiteminabforiinitem])

# 结果

[1,2,3,5,8,7,8,9]

求解 2 的 1000 次方的各位数之和

2 的 1000 次方的值很大,把结果每位数都加起来等于多少呢?

print(sum(map(int, str(2**1000))))

# 结果

1366

祝福

最后,送给各位:爱你三千遍!

print("I Love You!\n"*3000)

你觉得还有哪些好玩的、有意思的一行代码实现的功能,欢迎留言!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200314A0DR7U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券