最短的Python Quine?
Python 2.x(30个字节):
_='_=%r;print _%%_';print _%_
Python 3.x(32个字节):
_='_=%r;print(_%%_)';print(_%_)
这是最短的Python自引用程序吗?还是有更好的方法?这个程序似乎比自引用程序页面上的所有例子都要好。
我不算那些简单的“空”程序。
12 个回答
14
这段话的意思是,
print open(__file__).read()
还有任何涉及到导入的内容,都不是有效的自我复制程序(quine),因为自我复制程序的定义是不能接受任何输入。读取外部文件被认为是接受输入,因此自我复制程序不能读取文件——包括它自己。
顺便说一下,从技术上讲,python中最短的自我复制程序其实是一个空文件,但这也算是一种作弊。
24
从技术上讲,最短的Python自引用程序就是一个空文件。除了这个简单的例子:
因为Python的打印功能会自动在输出后加一个换行符,所以自引用程序实际上是 _='_=%r;print _%%_';print _%_\n
(这里的 \n
代表文件中的一个换行符)。
75
我就把这个放在这里(保存为 exceptionQuine.py):
File "exceptionQuine.py", line 1
File "exceptionQuine.py", line 1
^
IndentationError: unexpected indent