最短的Python Quine?

47 投票
12 回答
34614 浏览
提问于 2025-04-16 18:52

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

撰写回答