Python中的Quine2025年3月5日 | 阅读 3 分钟 引言Quine 是一种不接受任何输入但能生成自身代码副本的应用程序。我们已经在 C 语言中讨论过 quine。在 Python 中,只需一行代码即可写出最短的 quine!Quine 是一个自我复制的程序,它会打印自己的源代码。在 Python 中,通过打印程序的源文件来实现。 在 Python3.x 的情况下 说明 上面的代码是使用字符串格式化的典型示例。首先,定义一个名为 _ 的变量,并将其赋值为 '_=%r; print _%%_'。其次,打印 _%_。在这种情况下,我们使用 _ 作为字符串格式化输入来显示 _。_ 中的 %r 接收 _ 的值。甚至 %s 也可以代替 %r 使用。为了转义 %,我们在 '_=%r;print _%%_' 中使用了双 %。但是,你可能会争辩说下面的代码是最小的,对吧? 应该注意的是,虽然它是能够打印其源代码的最小 Python 程序,但它不是 quine,因为 quine 不应该能够通过 open() 方法发布其源代码。 使用 %s 而不是 %r 的一个小插曲使用 %s(它负责字符串格式化)代替 %r 是在 Python 中编写 quine 的另一种方法。 说明
Quine 的变量名更易读这是一个更易读的 quine 的示例,它不使用 _ 变量。 输出 quine_code='quine_code=%r;print(quine_code%%quine_code)';print(quine_code%quine_code) 说明 通过使用 %r 来包含其自身的字符串表示形式,此 quine 中的变量 quine_code 作为字符串包含完整的源代码。通过将 quine_code 的字符串内容替换为 print(quine_code%%quine_code) 命令中的 %r 来生成存储的代码。当程序运行时,这使其能够自我复制。 示例 2 输出 s = 's = %r\nprint(s %% s)' print(s % s) 说明 在此 quine 中,代码本身以字符串形式存储在变量 s 中:'s = %r\nprint(s %% s)'。n 开始一个新行,%r 准备文本以包含其自身的表示。当 print(s % s) 指令通过将 %r 替换为字符串 s 来显示整个源代码后,程序就变得自我复制了。 示例 3 输出 code = 'code = %r\nprint(code %% code)' print(code % code) 说明 为了用引号表示字符串,此 quine 将完整的源代码存储在变量 code 中,该变量包含格式说明符 %r。print(code %% code) 命令将自身插入格式字符串以输出 code 的值。因此,该应用程序会生成其自身代码的相同副本。 结论编写 quine 是一项有趣的挑战,可以评估一个人对基本编程概念、递归和字符串操作的掌握程度。Python 中的过程展示了该语言的表达能力和优雅的字符串处理能力。Quine 是有趣的谜题,同时也是计算自我参照能力的引人入胜的说明,将更深刻的哲学问题与系统和自我复制联系起来。 |
Python的requests库是一个强大的流行工具,用于发出HTTP请求。它的一个有用功能是自动处理重定向。重定向在Web上很常见,服务器响应客户端的请求,将其引导到另一个...
阅读 4 分钟
音频处理是众多应用的关键组成部分,从音乐创作和广播到语音识别和音频分析。WAV (波形声音文档组织) 文件是存储音频数据的流行选择,因为它们是无损压缩的,并提供高质量的声音……
7 分钟阅读
简介:在本教程中,我们将学习 Python 中的 Pandas rolling。Python 是一种用于数据分析的实用语言,这主要归功于其出色的以数据为中心的 Python 包。Pandas 是一个软件包,可以轻松导入和分析文件。Pandas dataframe.rolling()……
阅读 4 分钟
SimpleAudio 简介 SimpleAudio 库是一个 Python 模块,旨在使音频播放变得简单高效。当您想为应用程序添加快速声音时,例如在游戏中播放声音效果、声音通知,甚至...
阅读9分钟
在这个问题中,我们给定一个整数,即给定木棍的长度。我们在这个问题中的任务是将木棍分成多个部分。每段木棍的长度都是单位长度。我们必须最小化所需的时间...
阅读 3 分钟
Dijkstra 算法 Python 在给定的图和源顶点的情况下,找到源顶点与每个顶点之间的最短路径。Dijkstra 方法和 Prim 的最小生成树方法非常相似。我们创建一个 SPT(最短路径树)…阅读更多
阅读 6 分钟
importlib 包是 Python 中一个强大的模块集合,它提供了用于动态加载模块和程序的实用程序。它提供了一种灵活且高效的方式来以编程方式导入和使用模块,从而使开发人员能够编写更模块化和可维护的代码。在...
阅读 4 分钟
简介 可视化变量之间的关系对于理解复杂数据集至关重要。Seaborn 的相关性热图提供了一种优雅的方式来揭示这些模式,使您能够识别强相关的特征并指导特征工程和模型选择。它揭示了可能被忽视的隐藏关系...
阅读 3 分钟
引言 Apache Spark 已被证明是理想且有用的对大数据进行处理的框架。PySpark,即 Apache Spark 的 Python API,为开发人员提供了利用此处理工具的无缝能力。PySpark 中可用的 DataFrame API 与 Pandas 类似...
阅读 10 分钟
简介 Apache Beam 是一个开源 SDK,可用于构建分布式或直接数据管道,基于批处理或流式集成。对于每个管道,您可以添加不同的转换。然而,Beam 的真正强大之处在于它不依赖于任何一个计算引擎,这使得...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India