谁说使用 Python 你就写不出混乱的代码?

标签: python 代码 | 发表时间:2011-09-12 19:45 | 作者:(author unknown) Ken
出处:http://simple-is-better.com/

本文是从 Penrose Tiling in Obfuscated Python 这篇文章翻译而来。


谁说使用Python你就写不出混乱的代码?

下面这段Python代码是用来生成一些彭罗斯铺砖图案的。不错,这是段可运行的Python代码:

_                                 =\
                                """if!
                              1:"e,V=100
                            0,(0j-1)**-.2;
                           v,S=.5/  V.real,
                         [(0,0,4      *e,4*e*
                       V)];w=1          -v"def!
                      E(T,A,              B,C):P
                  ,Q,R=B*w+                A*v,B*w+C
            *v,A*w+B*v;retur              n[(1,Q,C,A),(1,P
     ,Q,B),(0,Q,P,A)]*T+[(0,C            ,R,B),(1,R,C,A)]*(1-T)"f
or!i!in!_[:11]:S       =sum([E          (*x)for       !x!in!S],[])"imp
  ort!cair               o!as!O;      s=O.Ima               geSurfac
   e(1,e,e)               ;c=O.Con  text(s);               M,L,G=c.
     move_to                ,c.line_to,c.s                et_sour
       ce_rgb                a"def!z(f,a)                :f(-a.
        imag,a.       real-e-e)"for!T,A,B,C!in[i       !for!i!
          in!S!if!i[""";exec(reduce(lambda x,i:x.replace(chr
           (i),"\n "[34-i:]),   range(   35),_+"""0]]:z(M,A
             );z(L,B);z         (L,C);         c.close_pa
             th()"G             (.4,.3             ,1);c.
             paint(             );G(.7             ,.7,1)
             ;c.fil             l()"fo             r!i!in
             !range             (9):"!             g=1-i/
             8;d=i/          4*g;G(d,d,d,          1-g*.8
             )"!def     !y(f,a):z(f,a+(1+2j)*(     1j**(i
             /2.))*g)"!for!T,A,B,C!in!S:y(M,C);y(L,A);y(M
             ,A);y(L,B)"!c.st            roke()"s.write_t
             o_png('pen                        rose.png')
             """                                       ))

当这段代码运行时,它会产生一个1000×1000的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图。下图是这个图片的一部分:

彭罗斯铺砖图

这个脚本需要Pycairo代码库。它只能运行在Python <= 2.7 版本上;Phthon 3并不支持。最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果。

彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案。它由罗杰·彭罗斯(Sir Roger Penrose)经过无数次的五边形铺拼试验而成。

相对于C和Perl,Python很少被认为是一种容易产生混乱的代码的语言。似乎从来没有人挑战过这种观点,网上也很少找到混乱的Python代码的例子:你可以在Phthon官方问答区里和像这里 和 这里 的一些页面中发现一些。这还有一个在PyCon 2011大会上的谈话

我相信这是第一个能输出高分辨率图片的混乱的Python代码。如果你还知道一些其它的,请在评论中分享出来!

# 来源:外刊IT评论


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [python 代码] 推荐:

python代码调试

- - 阿里古古
【转自: http://blog.csdn.net/luckeryin/article/details/4477233】. 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序. 例如,有模拟税收计算的程序:. debug_demo函数计算4500的入账所需的税收. 在需要插入断点的地方,加入红色部分代码:如果_DEBUG值为True,则在该处开始调试(加入_DEBUG的原因是为了方便打开/关闭调试).

Python安全编码与代码审计

- - FreeBuf.COM | 关注黑客与极客
现在一般的web开发框架安全已经做的挺好的了,比如大家常用的django,但是一些不规范的开发方式还是会导致一些常用的安全问题,下面就针对这些常用问题做一些总结. 代码审计准备部分见《php代码审计》,这篇文档主要讲述各种常用错误场景,基本上都是咱们自己的开发人员犯的错误,敏感信息已经去除. 未对输入和输出做过滤,场景:.

python 代码自动生成的方法 (代码生成器)

- - 大CC
python 代码自动生成的方法 (代码生成器). 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错;而借用python的代码自动生成,可以轻松搞定;. (类比JAVA中的Hibernate自动生成的数据库底层操作代码). 下面介绍使用python字符串替换的方法;.

3 行 Python 代码解简单的一元一次方程

- rex - python.cn(jobs, news)
刚才看到一篇《Linear equations solver in 3 lines (Python recipe)》,用3行代码实现了解一元一次方程:. 看上去很强大,于是就解读下代码吧. 首先是第一行,它将等式进行了变形,生成了一个结果为0的算式“x - 2*x + 5*x - 46*(235-24) -( x + 2)”.

谁说使用 Python 你就写不出混乱的代码?

- Ken - python.cn(jobs, news)
本文是从 Penrose Tiling in Obfuscated Python 这篇文章翻译而来. 谁说使用Python你就写不出混乱的代码. 下面这段Python代码是用来生成一些彭罗斯铺砖图案的. 不错,这是段可运行的Python代码:. 当这段代码运行时,它会产生一个1000×1000的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图.

谁说使用Python你就写不出混乱的代码?

- bingo - 博客园新闻频道
  本文是从 Penrose Tiling in Obfuscated Python这篇文章翻译而来.   谁说使用Python你就写不出混乱的代码.   下面这段Python代码是用来生成一些彭罗斯铺砖图案的. 不错,这是段可运行的Python代码:.   当这段代码运行时,它会产生一个1000×1000的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图.

50行Python代码写一个语言检测器

- - ITeye资讯频道
你有没有曾经好奇过Chrome浏览器是如何知道一个网页的语言,并对外国文字的网页提供翻译服务的. 或者,Facebook是如何翻译你朋友用写在你主页上的外国文字. 检测一种语言实际上非常简单,改进了用户体验,而且不需要用户做任何的事情. 我无意中发现的 ActiveState recipe for a language detector in Python这是非常不错的一段程序,但是我决定做点小小的改进.

从Zero到Hero,一文掌握Python关键代码

- -
选自free Code Camp. 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要且常见的语法,如基本的条件、循环语句,基本的列表和字典等数据结构,此外还介绍了函数的构建和对象与类的声明. 这些在使用 Python 执行机器学习任务中十分常见,它可以为我们搭建一个基本的使用框架.

基于 Python 的 Scrapy 爬虫入门:代码详解

- - SegmentFault 最新的文章
接下来创建一个爬虫项目,以 图虫网 为例抓取里面的图片. 在顶部菜单“发现” “标签”里面是对各种图片的分类,点击一个标签,比如“美女”,网页的链接为: https://tuchong.com/tags/美女/,我们以此作为爬虫入口,分析一下该页面:. 打开页面后出现一个个的图集,点击图集可全屏浏览图片,向下滚动页面会出现更多的图集,没有页码翻页的设置.

用 Python 代码生成视频的缩略图

- - IT瘾-dev
最近写了个 Reddit 发帖辅助工具,因为涉及视频的上传及标注出处来源,所以一个简单的脚本可以大大减轻我的工作量,出于糙快猛的考虑,自然而然就是 Python 了. Reddit 上目前充斥着各种机器人账号,官方也非常支持这种行为,只要不是无意义的发言,机器人多了还能增加活跃度,吸引真人用户一起来各抒己见,比如说每周都有的一个“烦人的星期二”的帖子,就是大伙儿吐槽生活中种种烦心事的好地方,因此提供了一整套开发者 API ,同时 SDK 也不难找,这里有一个详尽的 列表,大家可以根据自己的语言喜好随意取用.