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

Python如何从文件读取数字为整数变量 实现游戏分数存取

原代码问题
  • 保存函数变量名冲突:存储分数的列表和循环遍历的变量同名,都叫points。循环启动后第一次迭代就会把原列表覆盖为单个分数值,第二次迭代会直接抛出「整数对象不可迭代」的错误。同时写入分数时没有加分隔符,多个分数会拼接成一串连续数字,读取时无法拆分出独立分数。
  • 加载逻辑缺少类型转换和异常处理:readlines()返回的结果是带换行符的字符串列表,不会自动转为整数,直接当数值使用会触发类型错误。另外没有处理首次运行时存档文件不存在的场景,会直接抛出文件找不到的报错。
可直接运行的修正代码

场景1:存储多个分数(多玩家/多关卡得分)

保存功能

def save(points_list):
    with open('gameSave.txt', 'w', encoding='utf-8') as f:
        for score in points_list:
            # 每个分数后写入换行作为分隔符
            f.write(f'{score}\n')

# 调用示例:保存分数列表时直接传入,比如 save([98, 152, 30])

加载功能

points = []
try:
    with open("gameSave.txt", "r", encoding="utf-8") as g:
        for line in g:
            content = line.strip()
            # 跳过空行避免转换报错
            if content:
                points.append(int(content))
except FileNotFoundError:
    # 首次运行无存档时初始化默认分数
    points = [0]

场景2:仅存储单个总分数

如果你的游戏只需要存一个玩家的总分,可以用更简洁的写法:

保存功能

def save(total_score):
    with open('gameSave.txt', 'w', encoding='utf-8') as f:
        f.write(str(total_score))

加载功能

try:
    with open("gameSave.txt", "r", encoding="utf-8") as g:
        total_score = int(g.read().strip())
except FileNotFoundError:
    total_score = 0  # 替换为你的游戏初始分数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:06:20