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

Python修改best_score.txt保存游戏最高分失败,文件为空或内容不变怎么解决?

问题原因

你写入最高分的代码存在两处核心错误:

  • 变量引用错误:写入代码中的f是open()方法返回的文件操作对象,不是你读取到的文件内容字符串,对文件对象调用replace()方法完全不符合预期,要么直接抛出异常,要么生成无效内容,最终写入文件的数据自然是错的。
  • 逻辑冗余错误:你的best_score.txt仅存储单个分数字符串,完全不需要做查找替换操作,直接覆盖写入新的最高分即可,额外的替换逻辑完全是多余的。
修复方案

1. 读取最高分代码优化

先处理第一次运行游戏时文件不存在的边界情况,避免直接读取抛出异常:

try:
    with open("best_score.txt", "r") as f:
        # 加strip()去掉文件中可能存在的换行、空格等冗余字符
        best = int(f.read().strip())
except FileNotFoundError:
    # 首次运行无存储文件时,默认最高分设为0
    best = 0
old_best = best

2. 写入最高分代码修复

不需要做替换操作,直接把最新的最高分转成字符串覆盖写入即可:

# 满足写入条件时执行
if score == best:
    with open("best_score.txt", "w") as f:
        f.write(str(best))
其他可选实现方式

如果后续你需要存储更多结构化数据(比如不同难度的最高分、玩家昵称),可以用Python内置的json模块实现,不需要手动处理字符串解析:
写入示例:

import json
save_data = {
    "best_score": best,
    "difficulty": "hard"
}
with open("score_data.json", "w") as f:
    json.dump(save_data, f)

读取示例:

import json
try:
    with open("score_data.json", "r") as f:
        save_data = json.load(f)
        best = save_data["best_score"]
except (FileNotFoundError, json.JSONDecodeError):
    best = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:05