这是一个有效的自我复制程序吗?
def start(fileName): fileReader = open(fileName) for row in fileReader: print row, if __name__ == "__main__": import sys if len(sys.argv) <= 1: print "usage quine /path/to/file" sys.exit(-1) fileName = sys.argv[0] start(fileName)
用命令运行这个程序:python quine.py foo
2 个回答
2
Quine 程序不能访问文件系统,所以不行。正如维基百科所说:“允许输入会让程序通过键盘接收源代码,打开程序的源文件,以及类似的机制。”
参考资料: 维基百科:Quine(计算机)
9
不,quine 不应该接受任何输入:
quine 是一种不接受输入的程序。如果允许输入,就可以通过键盘把源代码输入到程序里,或者打开程序的源文件等,这样就不符合 quine 的定义了。
来源于 Quine (计算机科学)。
更新
你需要把源代码编码到 quine 里面。quine 由两个部分组成:一部分是实际打印的代码,另一部分是表示源代码的数据。虽然听起来像是递归,但其实不是。想要了解更好的 quine 教程,我推荐你看看 这个链接;我就是用这个教程创建了我自己设计的语言中的 quine。