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

Python字符串内引用字典键值写文件报错的解决方法

故障原因

代码无法运行不需要调整原有字典存储分数的逻辑,问题出在两个语法细节上:

  • Python是强制缩进的语言,with语句管辖的代码块必须做缩进(常规缩进4个空格),你写的File.write两行和with行顶格对齐,根本不在with块的执行范围内,会直接触发语法报错。
  • 你贴出的代码里的"是HTML转义生成的双引号占位符,不是Python解释器能识别的合法引号字符,实际写代码时要替换成正常的单引号或双引号。另外f-string会自动把插值的内容转为字符串,没必要额外套一层str()处理字典取到的分数值。
修复后可直接运行的代码
# 注意write语句前要加缩进,属于with块内的执行逻辑
with open(path, 'w', encoding='utf-8') as File:
    File.write(f"player score is {score['Player']}\n"
               f"computer score is {score['computer']}")

小提示:open里加encoding='utf-8'是为了跨系统兼容,避免Windows默认GBK编码和其他系统默认UTF-8编码不一致导致的乱码,如果你的记录文件全是数字、英文也可以省略这个参数,加上更稳妥。

可选优化(完全不改动原有分数存储逻辑)

如果后续你要新增其他角色的分数记录,不用反复拼接字符串,可以加个名称映射直接遍历字典写入,维护起来更方便:

# 只需要维护角色名和输出文案的对应关系就行,不需要改原有score字典的存储结构
role_output_map = {
    "Player": "player score is ",
    "computer": "computer score is "
}
with open(path, 'w', encoding='utf-8') as File:
    for role, val in score.items():
        File.write(f"{role_output_map[role]}{val}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:00:54