You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的string Template实现quine时$s无法替换该如何解决?

问题排查与解决方案

核心错误点

  • 输出变量错误:你代码最后执行的是print(s),打印的是未做替换的原始模板字符串,自然所有$s占位符都没有被替换。你已经通过substitute方法生成了替换后的结果t,但并没有打印这个变量。
  • 模板设计不符合quine要求:quine需要程序输出和自身源代码完全一致,你当前的模板中直接写s=$s,替换时不会自动给字符串值加外层引号,也不会转义换行等特殊字符,就算打印t也得不到和原代码一致的结果。

修正后的可运行实现

from string import Template
s = 'from string import Template\ns = ${s}\nt = Template(s).substitute(s=repr(s))\nprint(t)'
t = Template(s).substitute(s=repr(s))
print(t)

修正说明

  1. 替换参数传入repr(s):repr()会自动给字符串加上外层引号,同时转义内部的换行符等特殊字符,保证替换后s的赋值语句和原代码完全一致
  2. 模板中使用${s}明确占位符边界,避免和后续字符产生歧义
  3. 最后打印替换完成的变量t而非原始模板s

运行上述代码输出的内容和源代码完全一致,符合quine的定义。

内容的提问来源于stack exchange,提问作者Goby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:57:02